Ejemplo n.º 1
0
    def test_reference_existing_object_ref2(self):
        while gc.collect():
            pass
        Foobar_count1 = foo.Foobar.instance_count
        Box_count1 = foo.Box.instance_count

        box = foo.Box()
        self.assertEqual(foo.Box.instance_count, Box_count1 + 1)
        self.assertEqual(foo.Foobar.instance_count, Foobar_count1 + 1)

        f1 = box.getFoobarInternalRef2()
        self.assertEqual(foo.Foobar.instance_count, Foobar_count1 + 1)
        f2 = box.getFoobarInternalRef2()
        self.assertEqual(foo.Foobar.instance_count, Foobar_count1 + 1)
        self.assertTrue(f2 is f1)

        del f2, box
        while gc.collect():
            pass

        # f1 is still alive, so box should still exist, in spite of having been locally unreferenced
        self.assertEqual(foo.Box.instance_count, Box_count1 + 1)
        self.assertEqual(foo.Foobar.instance_count, Foobar_count1 + 1)

        # delete f1, it should cause box to be freeable
        del f1
        while gc.collect():
            pass

        self.assertEqual(foo.Foobar.instance_count, Foobar_count1)
        self.assertEqual(foo.Box.instance_count, Box_count1)
Ejemplo n.º 2
0
    def test_reference_existing_object_ref(self):
        while gc.collect():
            pass
        Foobar_count1 = foo.Foobar.instance_count
        box = foo.Box()
        self.assertEqual(foo.Foobar.instance_count, Foobar_count1 + 1)

        f1 = box.getFoobarInternalRef()
        self.assertEqual(foo.Foobar.instance_count, Foobar_count1 + 1)
        f2 = box.getFoobarInternalRef()
        self.assertEqual(foo.Foobar.instance_count, Foobar_count1 + 1)
        self.assertTrue(f2 is f1)

        del f1, f2, box

        while gc.collect():
            pass

        self.assertEqual(foo.Foobar.instance_count, Foobar_count1)
Ejemplo n.º 3
0
    def test_reference_existing_object_ptr_attribute(self):
        while gc.collect():
            pass
        Foobar_count1 = foo.Foobar.instance_count
        box = foo.Box()
        self.assertEqual(foo.Foobar.instance_count, Foobar_count1 + 1)

        f1 = box.m_internalFoobar
        self.assertEqual(foo.Foobar.instance_count, Foobar_count1 + 1)
        f2 = box.m_internalFoobar
        self.assertEqual(foo.Foobar.instance_count, Foobar_count1 + 1)
        self.assert_(f2 is f1)

        del f1, f2, box

        while gc.collect():
            pass

        self.assertEqual(foo.Foobar.instance_count, Foobar_count1)