7
7
#include < boost/network/protocol/http/server.hpp>
8
8
#include < boost/config/warning_disable.hpp>
9
9
#include < boost/test/unit_test.hpp>
10
+ #define BOOST_LOCALE_NO_LIB
11
+ #include < boost/locale/encoding.hpp>
10
12
#include < string>
11
13
#include < iostream>
12
14
@@ -26,17 +28,20 @@ namespace fusion = boost::fusion;
26
28
using namespace boost ::network::http;
27
29
28
30
BOOST_AUTO_TEST_CASE (async_connection_parse_headers) {
29
- request_header_narrow utf8_header = { " X-Utf8-Test-Header" , " R\uc5ab dolfs" };
31
+ std::wstring utf16_test_name = L" R\u016b dolfs" ;
32
+ request_header_narrow utf8_header = { " X-Utf8-Test-Header" , boost::locale::conv::utf_to_utf<char >(utf16_test_name) };
30
33
std::string valid_http_request;
31
34
valid_http_request.append (utf8_header.name ).append (" : " ).append (utf8_header.value ).append (" \r\n\r\n " );
32
35
std::vector<request_header_narrow> headers;
33
36
parse_headers (valid_http_request, headers);
34
- std::vector<request_header_narrow>::iterator utf8_header_iterator = std::find_if (headers.begin (), headers.end (), [&utf8_header, &utf8_header_iterator](request_header_narrow& header)
37
+ std::vector<request_header_narrow>::iterator header_iterator = headers.begin ();
38
+ for (; header_iterator != headers.end (); ++ header_iterator)
35
39
{
36
- if (header.name == utf8_header.name && header.value == utf8_header.value )
37
- return true ;
38
- return false ;
39
- });
40
- BOOST_CHECK (utf8_header_iterator != headers.end ());
41
- std::cout << " utf8 header parsed, name: " << utf8_header_iterator->name << " , value: " << utf8_header_iterator->value << std::endl;
42
- }
40
+ if (header_iterator->name == utf8_header.name && header_iterator->value == utf8_header.value )
41
+ break ;
42
+ }
43
+ std::wstring utf16_test_name_from_header = boost::locale::conv::utf_to_utf<wchar_t >(header_iterator->value );
44
+ BOOST_CHECK (header_iterator != headers.end ());
45
+ BOOST_CHECK (utf16_test_name_from_header == utf16_test_name);
46
+ std::cout << " utf8 header parsed, name: " << header_iterator->name << " , value: " << header_iterator->value ;
47
+ }
0 commit comments