def testSmartPointerConversions(self): # Create Obj. o = Obj() self.assertEqual(objCount(), 1) self.assertEqual(integerCount(), 1) # Create a shared pointer to an Integer2 integer2 = o.giveSharedPtrToInteger2() self.assertEqual(integer2.value(), 456) # pass Smart<Integer2> to a function that accepts Smart<Integer> r = o.takeSharedPtrToInteger(integer2) self.assertEqual(r, integer2.value())
def testIntegerSmartPointer(self): # Uncomment to see more debug info about creation of objects and ref counts. # Registry.getInstance().setShouldPrint(True) # Create Obj. o = Obj() self.assertEqual(objCount(), 1) # Create a shared pointer to an Integer together with an Integer. ptrToInteger = o.giveSharedPtrToInteger() self.assertEqual(objCount(), 1) self.assertEqual(integerCount(), 2) # Get a wrapper to the Integer inside of the shared pointer, integer count should not # change. integer = ptrToInteger.data() self.assertEqual(integerCount(), 2) integer.m_int = 50 self.assertEqual(integer.m_int, 50) # Set and get a member value via shared pointer (like operator->). ptrToInteger.setValue(150) self.assertEqual(ptrToInteger.value(), 150) # Set and get a member field via shared pointer (like operator->). ptrToInteger.m_int = 100 self.assertEqual(ptrToInteger.m_int, 100) # Pass smart pointer as argument to a method, return value is the value of m_int of # passed Integer inside the smart pointer. result = o.takeSharedPtrToInteger(ptrToInteger) self.assertEqual(result, 100) # Make a copy of the shared pointer, integer count should not change. ptrToInteger2 = copy(ptrToInteger) self.assertEqual(integerCount(), 2) # Delete the first shared pointer, integer count should not change because the second # one still has a reference. del ptrToInteger self.assertEqual(integerCount(), 2) # Delete the second smart pointer, integer should be deleted. del ptrToInteger2 self.assertEqual(objCount(), 1) self.assertEqual(integerCount(), 1) # Delete the original object which was used to create the integer. del o self.assertEqual(objCount(), 0) self.assertEqual(integerCount(), 0)