blob: 72253f45b422d2e98c6feedb3273d49e6be7b2e1 [file] [log] [blame]
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +00001import gc
2
3def test_list():
4 l = []
5 l.append(l)
6 print 'list 0x%x' % id(l)
7 gc.collect()
8 del l
9 assert gc.collect() == 1
10
11def test_dict():
12 d = {}
13 d[1] = d
14 print 'dict 0x%x' % id(d)
15 gc.collect()
16 del d
17 assert gc.collect() == 1
18
19def test_tuple():
20 l = []
21 t = (l,)
22 l.append(t)
23 print 'list 0x%x' % id(l)
24 print 'tuple 0x%x' % id(t)
25 gc.collect()
26 del t
27 del l
28 assert gc.collect() == 2
29
30def test_class():
31 class A:
32 pass
33 A.a = A
34 print 'class 0x%x' % id(A)
35 gc.collect()
36 del A
37 assert gc.collect() > 0
38
39def test_instance():
40 class A:
41 pass
42 a = A()
43 a.a = a
44 print repr(a)
45 gc.collect()
46 del a
47 assert gc.collect() > 0
48
49def test_method():
50 class A:
51 def __init__(self):
52 self.init = self.__init__
53 a = A()
54 gc.collect()
55 del a
56 assert gc.collect() > 0
57
58def test_finalizer():
59 class A:
60 def __del__(self): pass
61 class B:
62 pass
63 a = A()
64 a.a = a
65 id_a = id(a)
66 b = B()
67 b.b = b
68 print 'a', repr(a)
69 print 'b', repr(b)
70 gc.collect()
71 gc.garbage[:] = []
72 del a
73 del b
74 assert gc.collect() > 0
75 assert id(gc.garbage[0]) == id_a
76
77def test_function():
78 d = {}
79 exec("def f(): pass\n") in d
80 print 'dict 0x%x' % id(d)
81 print 'func 0x%x' % id(d['f'])
82 gc.collect()
83 del d
84 assert gc.collect() == 2
85
86
87def test_all():
88 debug = gc.get_debug()
89 gc.set_debug(gc.DEBUG_LEAK | gc.DEBUG_STATS)
90 test_list()
91 test_dict()
92 test_tuple()
93 test_class()
94 test_instance()
95 test_method()
96 test_finalizer()
97 test_function()
98 gc.set_debug(debug)
99
100test_all()