1 // (C) Copyright Gennadiy Rozental 2001-2015.
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
6 // See http://www.boost.org/libs/test for the library home page.
10 // Version : $Revision$
12 // Description : unit test for string comparison specializations
13 // *****************************************************************************
15 #define BOOST_TEST_MAIN
16 #include <boost/test/unit_test.hpp>
17 #include <boost/test/utils/is_cstring.hpp>
19 BOOST_AUTO_TEST_CASE( check_is_cstring_concept
)
21 namespace bp
= boost::unit_test
;
22 BOOST_TEST((bp::is_cstring
<char const*>::value
));
23 BOOST_TEST((bp::is_cstring
<char const []>::value
));
24 BOOST_TEST((bp::is_cstring
<char []>::value
));
25 BOOST_TEST((bp::is_cstring
<char *>::value
));
26 BOOST_TEST((!bp::is_cstring
<std::string
>::value
));
27 BOOST_TEST((!bp::is_cstring
< bp::basic_cstring
<char> >::value
));
29 BOOST_TEST((!bp::is_cstring
< std::vector
<char> >::value
));
32 BOOST_AUTO_TEST_CASE( check_is_cstring_comparable_concept
)
34 namespace bp
= boost::unit_test
;
35 BOOST_TEST((bp::is_cstring_comparable
<char const*>::value
));
36 BOOST_TEST((bp::is_cstring_comparable
<char const []>::value
));
37 BOOST_TEST((bp::is_cstring_comparable
<char []>::value
));
38 BOOST_TEST((bp::is_cstring_comparable
<char *>::value
));
39 BOOST_TEST((bp::is_cstring_comparable
<std::string
>::value
));
40 BOOST_TEST((bp::is_cstring_comparable
< bp::basic_cstring
<char> >::value
));
42 BOOST_TEST((!bp::is_cstring_comparable
< std::vector
<char> >::value
));
45 //____________________________________________________________________________//
47 BOOST_AUTO_TEST_CASE( check_string_compare
)
49 char const* buf_ptr_cch
= "abc";
50 char const buf_array_cch
[] = "abc";
51 char buf_array_ch
[] = "abc";
52 char* buf_ptr_ch
= buf_array_ch
;
53 std::string buf_str
= "abc";
55 BOOST_TEST((void*)buf_ptr_cch
!= (void*)buf_array_cch
);
56 BOOST_TEST((void*)buf_ptr_cch
!= (void*)buf_array_ch
);
57 BOOST_TEST((void*)buf_array_cch
!= (void*)buf_array_ch
);
59 BOOST_TEST(buf_ptr_cch
== buf_ptr_cch
);
60 #ifndef BOOST_TEST_MACRO_LIMITED_SUPPORT
61 BOOST_TEST(buf_ptr_cch
== buf_array_cch
);
62 BOOST_TEST(buf_ptr_cch
== buf_array_ch
);
63 BOOST_TEST(buf_ptr_cch
== buf_ptr_ch
);
64 BOOST_TEST(buf_ptr_cch
== buf_str
);
67 #ifndef BOOST_TEST_MACRO_LIMITED_SUPPORT
68 BOOST_TEST(buf_array_cch
== buf_ptr_cch
);
69 BOOST_TEST(buf_array_cch
== buf_array_cch
);
70 BOOST_TEST(buf_array_cch
== buf_ptr_ch
);
71 BOOST_TEST(buf_array_cch
== buf_array_ch
);
72 BOOST_TEST(buf_array_cch
== buf_str
);
75 BOOST_TEST(buf_ptr_ch
== buf_ptr_ch
);
76 #ifndef BOOST_TEST_MACRO_LIMITED_SUPPORT
77 BOOST_TEST(buf_ptr_ch
== buf_ptr_cch
);
78 BOOST_TEST(buf_ptr_ch
== buf_array_cch
);
79 BOOST_TEST(buf_ptr_ch
== buf_array_ch
);
80 BOOST_TEST(buf_ptr_ch
== buf_str
);
83 #ifndef BOOST_TEST_MACRO_LIMITED_SUPPORT
84 BOOST_TEST(buf_array_ch
== buf_ptr_cch
);
85 BOOST_TEST(buf_array_ch
== buf_array_cch
);
86 BOOST_TEST(buf_array_ch
== buf_ptr_ch
);
87 BOOST_TEST(buf_array_ch
== buf_array_ch
);
88 BOOST_TEST(buf_array_ch
== buf_str
);
91 BOOST_TEST(buf_str
== buf_ptr_cch
);
92 BOOST_TEST(buf_str
== buf_array_cch
);
93 BOOST_TEST(buf_str
== buf_ptr_ch
);
94 BOOST_TEST(buf_str
== buf_array_ch
);
95 BOOST_TEST(buf_str
== buf_str
);
97 BOOST_TEST(buf_ptr_cch
== buf_str
);
98 //BOOST_TEST(buf_array_cch == buf_str); // does not compile
99 BOOST_TEST(buf_ptr_ch
== buf_str
);
100 //BOOST_TEST(buf_array_ch == buf_str); // does not compile
101 BOOST_TEST(buf_str
== buf_str
);
103 #ifndef BOOST_TEST_MACRO_LIMITED_SUPPORT
104 BOOST_TEST( buf_ptr_cch
== buf_ptr_cch
, boost::test_tools::per_element() );
105 BOOST_TEST( buf_ptr_cch
<= "abd" , boost::test_tools::per_element() );
106 BOOST_TEST( buf_ptr_cch
>= "aba" , boost::test_tools::per_element() );
107 BOOST_TEST( buf_str
== buf_ptr_cch
, boost::test_tools::per_element() );
108 BOOST_TEST( buf_str
<= "abd" , boost::test_tools::per_element() );
109 BOOST_TEST( buf_str
>= "aba" , boost::test_tools::per_element() );
111 BOOST_TEST( buf_ptr_cch
<= buf_ptr_cch
, boost::test_tools::lexicographic() );
112 BOOST_TEST( buf_ptr_cch
>= buf_ptr_cch
, boost::test_tools::lexicographic() );
113 BOOST_TEST( buf_ptr_cch
<= "abc" , boost::test_tools::lexicographic() );
114 BOOST_TEST( buf_ptr_cch
< "abd" , boost::test_tools::lexicographic() );
115 BOOST_TEST( buf_ptr_cch
< "abcd" , boost::test_tools::lexicographic() );
116 BOOST_TEST( buf_ptr_cch
>= "abc" , boost::test_tools::lexicographic() );
117 BOOST_TEST( buf_ptr_cch
> "aba" , boost::test_tools::lexicographic() );
118 BOOST_TEST( buf_ptr_cch
> "abad" , boost::test_tools::lexicographic() );
119 BOOST_TEST( buf_str
<= buf_ptr_cch
, boost::test_tools::lexicographic() );
120 BOOST_TEST( buf_str
>= buf_ptr_cch
, boost::test_tools::lexicographic() );
121 BOOST_TEST( buf_str
<= "abc" , boost::test_tools::lexicographic() );
122 BOOST_TEST( buf_str
< "abd" , boost::test_tools::lexicographic() );
123 BOOST_TEST( buf_str
> "aba" , boost::test_tools::lexicographic() );