1 // autogenerated file with codegen.pl 2 3 #include "preextstl.h" 4 #include "cppunit/TestAssert.h" 5 #include "cppunit/TestFixture.h" 6 #include "cppunit/extensions/HelperMacros.h" 7 #include "cppunit/plugin/TestPlugIn.h" 8 #include "postextstl.h" 9 10 #include "cow_wrapper_clients.hxx" 11 12 using namespace ::o3tl; 13 using namespace ::o3tltests; 14 15 16 class cow_wrapper_test : public CppUnit::TestFixture 17 { 18 public: 19 template< class T > void test( T& rTestObj1, T& rTestObj2, T& rTestObj3 ) 20 { 21 CPPUNIT_ASSERT_MESSAGE("rTestObj1 is unique", 22 rTestObj1.is_unique() ); 23 CPPUNIT_ASSERT_MESSAGE("rTestObj2 is unique", 24 rTestObj2.is_unique() ); 25 CPPUNIT_ASSERT_MESSAGE("rTestObj3 is unique", 26 rTestObj3.is_unique() ); 27 28 CPPUNIT_ASSERT_MESSAGE("rTestObj1 != rTestObj2", 29 rTestObj1 != rTestObj2 ); 30 CPPUNIT_ASSERT_MESSAGE("rTestObj2 != rTestObj3", 31 rTestObj2 != rTestObj3 ); 32 CPPUNIT_ASSERT_MESSAGE("rTestObj1 != rTestObj3", 33 rTestObj1 != rTestObj3 ); 34 CPPUNIT_ASSERT_MESSAGE("rTestObj1 < rTestObj2", 35 rTestObj1 < rTestObj2 ); 36 CPPUNIT_ASSERT_MESSAGE("rTestObj2 < rTestObj3", 37 rTestObj2 < rTestObj3 ); 38 39 rTestObj2 = rTestObj1; 40 rTestObj3 = rTestObj1; 41 CPPUNIT_ASSERT_MESSAGE("rTestObj1 == rTestObj2", 42 rTestObj1 == rTestObj2 ); 43 CPPUNIT_ASSERT_MESSAGE("rTestObj1 == rTestObj3", 44 rTestObj1 == rTestObj3 ); 45 CPPUNIT_ASSERT_MESSAGE("rTestObj1.use_count() == 3", 46 rTestObj1.use_count() == 3 ); 47 CPPUNIT_ASSERT_MESSAGE("rTestObj2.use_count() == 3", 48 rTestObj2.use_count() == 3 ); 49 CPPUNIT_ASSERT_MESSAGE("rTestObj3.use_count() == 3", 50 rTestObj3.use_count() == 3 ); 51 52 rTestObj2.makeUnique(); 53 CPPUNIT_ASSERT_MESSAGE("rTestObj1 == rTestObj2", 54 rTestObj1 == rTestObj2 ); 55 CPPUNIT_ASSERT_MESSAGE("rTestObj1 == rTestObj3", 56 rTestObj1 == rTestObj3 ); 57 CPPUNIT_ASSERT_MESSAGE("rTestObj1.use_count() == 2", 58 rTestObj1.use_count() == 2 ); 59 CPPUNIT_ASSERT_MESSAGE("rTestObj2.use_count() == 1", 60 rTestObj2.use_count() == 1 ); 61 CPPUNIT_ASSERT_MESSAGE("rTestObj2.is_unique()", 62 rTestObj2.is_unique() ); 63 CPPUNIT_ASSERT_MESSAGE("rTestObj3.use_count() == 2", 64 rTestObj3.use_count() == 2 ); 65 66 rTestObj2.swap( rTestObj3 ); 67 CPPUNIT_ASSERT_MESSAGE("rTestObj1 == rTestObj2", 68 rTestObj1 == rTestObj2 ); 69 CPPUNIT_ASSERT_MESSAGE("rTestObj1 == rTestObj3", 70 rTestObj1 == rTestObj3 ); 71 CPPUNIT_ASSERT_MESSAGE("rTestObj1.use_count() == 2", 72 rTestObj1.use_count() == 2 ); 73 CPPUNIT_ASSERT_MESSAGE("rTestObj2.use_count() == 2", 74 rTestObj2.use_count() == 2 ); 75 CPPUNIT_ASSERT_MESSAGE("rTestObj3.use_count() == 1", 76 rTestObj3.use_count() == 1 ); 77 CPPUNIT_ASSERT_MESSAGE("rTestObj3.is_unique()", 78 rTestObj3.is_unique() ); 79 } 80 81 void testCowWrapper() 82 { 83 // setup 84 cow_wrapper_client1 aTestObj1; 85 cow_wrapper_client1 aTestObj2; 86 cow_wrapper_client1 aTestObj3; 87 88 cow_wrapper_client2 aTestObj4; 89 cow_wrapper_client2 aTestObj5; 90 cow_wrapper_client2 aTestObj6; 91 92 cow_wrapper_client3 aTestObj7; 93 cow_wrapper_client3 aTestObj8; 94 cow_wrapper_client3 aTestObj9; 95 96 { 97 aTestObj1 = cow_wrapper_client1( 1 ); 98 aTestObj2.modify( 2 ); 99 aTestObj3.modify( 3 ); 100 101 aTestObj4 = cow_wrapper_client2( 4 ); 102 aTestObj5.modify( 5 ); 103 aTestObj6.modify( 6 ); 104 105 aTestObj7 = cow_wrapper_client3( 7 ); 106 aTestObj8.modify( 8 ); 107 aTestObj9.modify( 9 ); 108 } 109 // all three temporaries are dead now 110 111 // test 112 test( aTestObj1, aTestObj2, aTestObj3 ); 113 test( aTestObj4, aTestObj5, aTestObj6 ); 114 test( aTestObj7, aTestObj8, aTestObj9 ); 115 } 116 117 // Change the following lines only, if you add, remove or rename 118 // member functions of the current class, 119 // because these macros are need by auto register mechanism. 120 121 CPPUNIT_TEST_SUITE(cow_wrapper_test); 122 CPPUNIT_TEST(testCowWrapper); 123 CPPUNIT_TEST_SUITE_END(); 124 }; 125 126 // ----------------------------------------------------------------------------- 127 CPPUNIT_TEST_SUITE_REGISTRATION(cow_wrapper_test); 128 129 CPPUNIT_PLUGIN_IMPLEMENT(); 130