]>
Commit | Line | Data |
---|---|---|
92f5a8d4 TL |
1 | |
2 | // Copyright 2017 Peter Dimov. | |
3 | // | |
4 | // Distributed under the Boost Software License, Version 1.0. | |
5 | // | |
6 | // See accompanying file LICENSE_1_0.txt or copy at | |
7 | // http://www.boost.org/LICENSE_1_0.txt | |
8 | ||
9 | #include <boost/variant2/variant.hpp> | |
10 | #include <boost/core/lightweight_test.hpp> | |
11 | #include <boost/core/lightweight_test_trait.hpp> | |
12 | #include <type_traits> | |
13 | #include <utility> | |
14 | #include <string> | |
15 | ||
16 | using namespace boost::variant2; | |
17 | ||
18 | struct X | |
19 | { | |
20 | }; | |
21 | ||
22 | inline bool operator==( X const&, X const& ) { return false; } | |
23 | inline bool operator!=( X const&, X const& ) { return false; } | |
24 | ||
25 | int main() | |
26 | { | |
27 | { | |
28 | variant<int> v1, v2, v3( 1 ), v4( 1 ); | |
29 | ||
30 | BOOST_TEST( v1 == v2 ); | |
31 | BOOST_TEST_NOT( v1 != v2 ); | |
32 | ||
33 | BOOST_TEST( v1 != v3 ); | |
34 | BOOST_TEST_NOT( v1 == v3 ); | |
35 | ||
36 | BOOST_TEST( v3 == v4 ); | |
37 | BOOST_TEST_NOT( v3 != v4 ); | |
38 | } | |
39 | ||
40 | { | |
41 | variant<int, float> v1, v2, v3( 1 ), v4( 1 ), v5( 3.14f ), v6( 3.14f ); | |
42 | ||
43 | BOOST_TEST( v1 == v2 ); | |
44 | BOOST_TEST_NOT( v1 != v2 ); | |
45 | ||
46 | BOOST_TEST( v1 != v3 ); | |
47 | BOOST_TEST_NOT( v1 == v3 ); | |
48 | ||
49 | BOOST_TEST( v3 == v4 ); | |
50 | BOOST_TEST_NOT( v3 != v4 ); | |
51 | ||
52 | BOOST_TEST( v1 != v5 ); | |
53 | BOOST_TEST_NOT( v1 == v5 ); | |
54 | ||
55 | BOOST_TEST( v3 != v5 ); | |
56 | BOOST_TEST_NOT( v3 == v5 ); | |
57 | ||
58 | BOOST_TEST( v5 == v6 ); | |
59 | BOOST_TEST_NOT( v5 != v6 ); | |
60 | } | |
61 | ||
62 | { | |
63 | variant<int, int, float> v1, v2, v3( in_place_index_t<1>{} ), v4( in_place_index_t<1>{} ), v5( 3.14f ), v6( 3.14f ); | |
64 | ||
65 | BOOST_TEST( v1 == v2 ); | |
66 | BOOST_TEST_NOT( v1 != v2 ); | |
67 | ||
68 | BOOST_TEST( v1 != v3 ); | |
69 | BOOST_TEST_NOT( v1 == v3 ); | |
70 | ||
71 | BOOST_TEST( v3 == v4 ); | |
72 | BOOST_TEST_NOT( v3 != v4 ); | |
73 | ||
74 | BOOST_TEST( v1 != v5 ); | |
75 | BOOST_TEST_NOT( v1 == v5 ); | |
76 | ||
77 | BOOST_TEST( v3 != v5 ); | |
78 | BOOST_TEST_NOT( v3 == v5 ); | |
79 | ||
80 | BOOST_TEST( v5 == v6 ); | |
81 | BOOST_TEST_NOT( v5 != v6 ); | |
82 | } | |
83 | ||
84 | { | |
85 | variant<X> v1, v2; | |
86 | ||
87 | BOOST_TEST_NOT( v1 == v2 ); | |
88 | BOOST_TEST_NOT( v1 != v2 ); | |
89 | } | |
90 | ||
91 | return boost::report_errors(); | |
92 | } |