1 #include <zypp/base/PtrTypes.h>
9 Foo(int foo=0): _foo(foo)
11 std::cerr << "created Foo(" << _foo << ")" << std::endl;
15 std::cerr << "destroy Foo(" << _foo << ")" << std::endl;
19 #define REF_TEST(ref,msg,exp,res) \
22 std::cerr << msg << std::endl; \
24 std::cerr << "ref contains object" << std::endl; \
26 std::cerr << "ref contains no object" << std::endl; \
28 std::cerr << "ref counter is " << ref.use_count() << std::endl; \
30 std::cerr << "ref is unique" << std::endl; \
32 std::cerr << "EXPECTED" << std::endl; \
34 std::cerr << "NOT EXPECTED" << std::endl; \
38 std::cerr << "ref is shared" << std::endl; \
40 std::cerr << "EXPECTED" << std::endl; \
42 std::cerr << "NOT EXPECTED" << std::endl; \
46 std::cerr << std::endl; \
49 int main(int argc, char *argv[])
53 bool skip_reset = argc > 1;
56 typedef zypp::RW_pointer<Foo> FooRef;
59 REF_TEST(ref,"=== REF(nil)", true, result);
61 ref.reset(new Foo(42));
62 REF_TEST(ref,"=== REF(object)", true, result);
66 REF_TEST(ref,"=== REF2(REF)", false, result);
69 REF_TEST(ref,"=== REF(object), REF2 out of scope now", true, result);
74 REF_TEST(ref,"=== REF(nil), reset()", true, result);
77 std::cerr << "RESULT: "
78 << (result == 0 ? "PASSED" : "FAILED")