from refcount import * # # very innocent example # a = A3() b1 = B(a) b2 = B.create(a) if a.ref_count() != 3: raise RuntimeError("Count = %d" % a.ref_count()) rca = b2.get_rca() b3 = B.create(rca) if a.ref_count() != 5: raise RuntimeError("Count = %d" % a.ref_count()) v = vector_A(2) v[0] = a v[1] = a x = v[0] del v if a.ref_count() != 6: raise RuntimeError("Count = %d" % a.ref_count()) # Check %newobject b4 = b2.cloner() if b4.ref_count() != 1: raise RuntimeError b5 = global_create(a) if b5.ref_count() != 1: raise RuntimeError b6 = Factory.create(a) if b6.ref_count() != 1: raise RuntimeError b7 = Factory().create2(a) if b7.ref_count() != 1: raise RuntimeError if a.ref_count() != 10: raise RuntimeError("Count = %d" % a.ref_count()) del b4 del b5 del b6 del b7 if a.ref_count() != 6: raise RuntimeError("Count = %d" % a.ref_count())