2 // Copyright (c) 2012 Artyom Beilis (Tonkikh)
4 // Distributed under the Boost Software License, Version 1.0. (See
5 // accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
9 #include <boost/nowide/convert.hpp>
13 #include "test_sets.hpp"
15 #if defined(BOOST_MSVC) && BOOST_MSVC < 1700
16 #pragma warning(disable : 4428) // universal-character-name encountered in source
19 std::wstring
widen_buf_ptr(const std::string
& s
)
22 TEST(boost::nowide::widen(buf
, 50, s
.c_str()) == buf
);
26 std::string
narrow_buf_ptr(const std::wstring
& s
)
29 TEST(boost::nowide::narrow(buf
, 50, s
.c_str()) == buf
);
33 std::wstring
widen_buf_range(const std::string
& s
)
36 TEST(boost::nowide::widen(buf
, 50, s
.c_str(), s
.c_str() + s
.size()) == buf
);
40 std::string
narrow_buf_range(const std::wstring
& s
)
43 TEST(boost::nowide::narrow(buf
, 50, s
.c_str(), s
.c_str() + s
.size()) == buf
);
47 std::wstring
widen_raw_string(const std::string
& s
)
49 return boost::nowide::widen(s
.c_str());
52 std::string
narrow_raw_string(const std::wstring
& s
)
54 return boost::nowide::narrow(s
.c_str());
57 std::wstring
widen_raw_string_and_size(const std::string
& s
)
60 const std::string s2
= s
+ "DummyData";
61 return boost::nowide::widen(s2
.c_str(), s
.size());
64 std::string
narrow_raw_string_and_size(const std::wstring
& s
)
67 const std::wstring s2
= s
+ L
"DummyData";
68 return boost::nowide::narrow(s2
.c_str(), s
.size());
71 void test_main(int, char**, char**)
73 std::string hello
= "\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d";
74 std::wstring whello
= L
"\u05e9\u05dc\u05d5\u05dd";
75 std::wstring whello_3e
= L
"\u05e9\u05dc\u05d5\ufffd";
76 std::wstring whello_3
= L
"\u05e9\u05dc\u05d5";
78 std::cout
<< "- boost::nowide::widen" << std::endl
;
80 const char* b
= hello
.c_str();
81 const char* e
= b
+ hello
.size();
82 wchar_t buf
[6] = {0, 0, 0, 0, 0, 1};
83 TEST(boost::nowide::widen(buf
, 5, b
, e
) == buf
);
86 TEST(boost::nowide::widen(buf
, 4, b
, e
) == 0);
87 TEST(boost::nowide::widen(buf
, 5, b
, e
- 1) == buf
);
88 TEST(buf
== whello_3e
);
89 TEST(boost::nowide::widen(buf
, 5, b
, e
- 2) == buf
);
90 TEST(buf
== whello_3
);
91 TEST(boost::nowide::widen(buf
, 5, b
, b
) == buf
&& buf
[0] == 0);
92 TEST(boost::nowide::widen(buf
, 5, b
, b
+ 2) == buf
&& buf
[1] == 0 && buf
[0] == whello
[0]);
94 std::cout
<< "- boost::nowide::narrow" << std::endl
;
96 const wchar_t* b
= whello
.c_str();
97 const wchar_t* e
= b
+ whello
.size(); //-V594
100 TEST(boost::nowide::narrow(buf
, 9, b
, e
) == buf
);
103 TEST(boost::nowide::narrow(buf
, 8, b
, e
) == 0);
104 TEST(boost::nowide::narrow(buf
, 7, b
, e
- 1) == buf
);
105 TEST(buf
== hello
.substr(0, 6));
108 std::cout
<< "- (output_buffer, buffer_size, input_raw_string)" << std::endl
;
109 run_all(widen_buf_ptr
, narrow_buf_ptr
);
110 std::cout
<< "- (output_buffer, buffer_size, input_raw_string, string_len)" << std::endl
;
111 run_all(widen_buf_range
, narrow_buf_range
);
112 std::cout
<< "- (input_raw_string)" << std::endl
;
113 run_all(widen_raw_string
, narrow_raw_string
);
114 std::cout
<< "- (input_raw_string, size)" << std::endl
;
115 run_all(widen_raw_string_and_size
, narrow_raw_string_and_size
);
116 std::cout
<< "- (const std::string&)" << std::endl
;
117 run_all(boost::nowide::widen
, boost::nowide::narrow
);