blob: 943f8370fdbdd8fbbd83a1753961ad7da59407b5 [file] [log] [blame]
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +00001import gc
2
3def test_list():
4 l = []
5 l.append(l)
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +00006 gc.collect()
7 del l
8 assert gc.collect() == 1
9
10def test_dict():
11 d = {}
12 d[1] = d
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +000013 gc.collect()
14 del d
15 assert gc.collect() == 1
16
17def test_tuple():
18 l = []
19 t = (l,)
20 l.append(t)
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +000021 gc.collect()
22 del t
23 del l
24 assert gc.collect() == 2
25
26def test_class():
27 class A:
28 pass
29 A.a = A
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +000030 gc.collect()
31 del A
32 assert gc.collect() > 0
33
34def test_instance():
35 class A:
36 pass
37 a = A()
38 a.a = a
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +000039 gc.collect()
40 del a
41 assert gc.collect() > 0
42
43def test_method():
44 class A:
45 def __init__(self):
46 self.init = self.__init__
47 a = A()
48 gc.collect()
49 del a
50 assert gc.collect() > 0
51
52def test_finalizer():
53 class A:
54 def __del__(self): pass
55 class B:
56 pass
57 a = A()
58 a.a = a
59 id_a = id(a)
60 b = B()
61 b.b = b
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +000062 gc.collect()
63 gc.garbage[:] = []
64 del a
65 del b
66 assert gc.collect() > 0
67 assert id(gc.garbage[0]) == id_a
68
69def test_function():
70 d = {}
71 exec("def f(): pass\n") in d
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +000072 gc.collect()
73 del d
74 assert gc.collect() == 2
75
76
77def test_all():
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +000078 test_list()
79 test_dict()
80 test_tuple()
81 test_class()
82 test_instance()
83 test_method()
84 test_finalizer()
85 test_function()
Jeremy Hyltonc5007aa2000-06-30 05:02:53 +000086
87test_all()