]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/system/test/result_eq.cpp
1 // Copyright 2017, 2021 Peter Dimov.
2 // Distributed under the Boost Software License, Version 1.0.
3 // https://www.boost.org/LICENSE_1_0.txt
5 #include <boost/system/result.hpp>
6 #include <boost/core/lightweight_test.hpp>
10 using namespace boost::system
;
18 explicit X( int v
): v_( v
) { ++instances
; }
20 X( X
const& r
) = delete;
21 X( X
&& r
): v_( r
.v_
) { r
.v_
= 0; ++instances
; }
23 X
& operator=( X
const& ) = delete;
36 bool operator==( X
const & x1
, X
const & x2
)
38 return x1
.v_
== x2
.v_
;
41 std::ostream
& operator<<( std::ostream
& os
, X
const & x
)
55 explicit Y( int v
= 0 ): v_( v
) { ++instances
; }
57 Y( Y
const& r
) noexcept
: v_( r
.v_
) { ++instances
; }
58 Y( Y
&& r
) noexcept
: v_( r
.v_
) { r
.v_
= 0; ++instances
; }
60 Y
& operator=( Y
const& ) = default;
73 bool operator==( Y
const & y1
, Y
const & y2
)
75 return y1
.v_
== y2
.v_
;
78 std::ostream
& operator<<( std::ostream
& os
, Y
const & y
)
92 BOOST_TEST_EQ( r1
, r1
);
93 BOOST_TEST_NE( r1
, r2
);
97 result
<int> r1( 1, generic_category() );
98 result
<int> r2( 2, generic_category() );
100 BOOST_TEST_EQ( r1
, r1
);
101 BOOST_TEST_NE( r1
, r2
);
106 result
<int> r2( 2, generic_category() );
108 BOOST_TEST_EQ( r1
, r1
);
109 BOOST_TEST_NE( r1
, r2
);
113 result
<X
, Y
> r1( in_place_value
, 1 );
114 result
<X
, Y
> r2( in_place_value
, 2 );
116 BOOST_TEST_EQ( r1
, r1
);
117 BOOST_TEST_NE( r1
, r2
);
121 result
<X
, Y
> r1( in_place_error
, 1 );
122 result
<X
, Y
> r2( in_place_error
, 2 );
124 BOOST_TEST_EQ( r1
, r1
);
125 BOOST_TEST_NE( r1
, r2
);
129 result
<X
, Y
> r1( in_place_value
, 1 );
130 result
<X
, Y
> r2( in_place_error
, 2 );
132 BOOST_TEST_EQ( r1
, r1
);
133 BOOST_TEST_NE( r1
, r2
);
140 BOOST_TEST_EQ( r1
, r1
);
141 BOOST_TEST_EQ( r1
, r2
);
145 result
<void> r1( 1, generic_category() );
146 result
<void> r2( 2, generic_category() );
148 BOOST_TEST_EQ( r1
, r1
);
149 BOOST_TEST_NE( r1
, r2
);
152 return boost::report_errors();