def test_qi(self): p = POINTER(IUnknown)() windll.oleaut32.CreateTypeLib2(1, "blabla", byref(p)) self.assertEqual(p.AddRef(), 2) self.assertEqual(p.Release(), 1) other = p.QueryInterface(IUnknown) self.assertEqual(other.AddRef(), 3) self.assertEqual(p.AddRef(), 4) self.assertEqual(p.Release(), 3) self.assertEqual(other.Release(), 2) del p # calls p.Release() self.assertEqual(other.AddRef(), 2) self.assertEqual(other.Release(), 1)
def test_refcounts(self): p = POINTER(IUnknown)() windll.oleaut32.CreateTypeLib2(1, "blabla", byref(p)) # initial refcount is 2 for i in range(2, 10): self.assertEqual(p.AddRef(), i) for i in range(8, 0, -1): self.assertEqual(p.Release(), i)