diff --git a/test/Jamfile b/test/Jamfile index abd9bee..29981d6 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -374,3 +374,5 @@ run lsp_owner_equals_test.cpp ; run owner_equal_to_test.cpp ; run owner_equal_to_test2.cpp ; + +run owner_less_test2.cpp ; diff --git a/test/owner_less_test2.cpp b/test/owner_less_test2.cpp new file mode 100644 index 0000000..b4ff38d --- /dev/null +++ b/test/owner_less_test2.cpp @@ -0,0 +1,106 @@ +// Copyright 2020 Peter Dimov +// Distributed under the Boost Software License, Version 1.0. +// https://www.boost.org/LICENSE_1_0.txt + +#include +#include +#include + +int main() +{ + boost::owner_less<> const lt; + + { + boost::local_shared_ptr p1( new int ); + boost::local_shared_ptr p2( p1 ); + + BOOST_TEST( !lt( p1, p2 ) ); + BOOST_TEST( !lt( p2, p1 ) ); + + boost::local_shared_ptr p3( new int ); + + BOOST_TEST( lt( p1, p3 ) || lt( p3, p1 ) ); + + boost::local_shared_ptr p4; + boost::local_shared_ptr p5; + + BOOST_TEST( !lt( p4, p5 ) ); + BOOST_TEST( !lt( p5, p4 ) ); + + BOOST_TEST( lt( p4, p3 ) || lt( p3, p4 ) ); + + boost::local_shared_ptr p6( static_cast(0) ); + + BOOST_TEST( lt( p4, p6 ) || lt( p6, p4 ) ); + + boost::local_shared_ptr p7( p1 ); + + BOOST_TEST( !lt( p1, p7 ) ); + BOOST_TEST( !lt( p7, p1 ) ); + + boost::local_shared_ptr p8; + + BOOST_TEST( lt( p1, p8 ) || lt( p8, p1 ) ); + + BOOST_TEST( !lt( p4, p8 ) ); + BOOST_TEST( !lt( p8, p4 ) ); +/* + boost::local_weak_ptr q1( p1 ); + + BOOST_TEST( !lt( p1, q1 ) ); + BOOST_TEST( !lt( q1, p1 ) ); + + boost::local_weak_ptr q2( p1 ); + + BOOST_TEST( !lt( q1, q2 ) ); + BOOST_TEST( !lt( q2, q1 ) ); + + boost::local_weak_ptr q3( p3 ); + + BOOST_TEST( lt( p1, q3 ) || lt( q3, p1 ) ); + BOOST_TEST( lt( q1, q3 ) || lt( q3, q1 ) ); + + boost::local_weak_ptr q4; + + BOOST_TEST( !lt( p4, q4 ) ); + BOOST_TEST( !lt( q4, p4 ) ); + + BOOST_TEST( lt( q1, q4 ) || lt( q4, q1 ) ); + + boost::local_weak_ptr q5; + + BOOST_TEST( !lt( q4, q5 ) ); + BOOST_TEST( !lt( q5, q4 ) ); + + boost::local_weak_ptr q7( p7 ); + + BOOST_TEST( !lt( p1, q7 ) ); + BOOST_TEST( !lt( q7, p1 ) ); + + BOOST_TEST( !lt( q1, q7 ) ); + BOOST_TEST( !lt( q7, q1 ) ); + + p1.reset(); + p2.reset(); + p3.reset(); + p7.reset(); + + BOOST_TEST( q1.expired() ); + BOOST_TEST( q2.expired() ); + BOOST_TEST( q3.expired() ); + BOOST_TEST( q7.expired() ); + + BOOST_TEST( !lt( q1, q2 ) ); + BOOST_TEST( !lt( q2, q1 ) ); + + BOOST_TEST( !lt( q1, q7 ) ); + BOOST_TEST( !lt( q7, q1 ) ); + + BOOST_TEST( lt( q1, q3 ) || lt( q3, q1 ) ); + + BOOST_TEST( lt( q1, q4 ) || lt( q4, q1 ) ); +*/ + } + + return boost::report_errors(); +}