1 #include <boost/test/unit_test.hpp>
3 #include <zypp/base/PtrTypes.h>
7 #define BOOST_TEST_MODULE RWPtr_test
13 Foo(int foo=0): _foo(foo)
15 std::cerr << "created Foo(" << _foo << ")" << std::endl;
19 std::cerr << "destroy Foo(" << _foo << ")" << std::endl;
23 #define REF_TEST(ref,msg,exp,res) \
26 std::cerr << msg << std::endl; \
28 std::cerr << "ref contains object" << std::endl; \
30 std::cerr << "ref contains no object" << std::endl; \
32 std::cerr << "ref counter is " << ref.use_count() << std::endl; \
34 std::cerr << "ref is unique" << std::endl; \
36 std::cerr << "EXPECTED" << std::endl; \
38 std::cerr << "NOT EXPECTED" << std::endl; \
42 std::cerr << "ref is shared" << std::endl; \
44 std::cerr << "EXPECTED" << std::endl; \
46 std::cerr << "NOT EXPECTED" << std::endl; \
50 std::cerr << std::endl; \
53 BOOST_AUTO_TEST_CASE(basic_test)
55 bool skip_reset = false;
58 typedef zypp::RW_pointer<Foo> FooRef;
61 REF_TEST(ref,"=== REF(nil)", true, result);
63 ref.reset(new Foo(42));
64 REF_TEST(ref,"=== REF(object)", true, result);
68 REF_TEST(ref,"=== REF2(REF)", false, result);
71 REF_TEST(ref,"=== REF(object), REF2 out of scope now", true, result);
76 REF_TEST(ref,"=== REF(nil), reset()", true, result);
79 std::cerr << "RESULT: "
80 << (result == 0 ? "PASSED" : "FAILED")