Bump version to 0.9.1.
[python/dscho.git] / Lib / test / test_gc.py
blob7f8e42434397a38d81c30fe131b6b300b53259e5
1 import gc
3 def test_list():
4 l = []
5 l.append(l)
6 gc.collect()
7 del l
8 assert gc.collect() == 1
10 def test_dict():
11 d = {}
12 d[1] = d
13 gc.collect()
14 del d
15 assert gc.collect() == 1
17 def test_tuple():
18 l = []
19 t = (l,)
20 l.append(t)
21 gc.collect()
22 del t
23 del l
24 assert gc.collect() == 2
26 def test_class():
27 class A:
28 pass
29 A.a = A
30 gc.collect()
31 del A
32 assert gc.collect() > 0
34 def test_instance():
35 class A:
36 pass
37 a = A()
38 a.a = a
39 gc.collect()
40 del a
41 assert gc.collect() > 0
43 def 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
52 def 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
62 gc.collect()
63 gc.garbage[:] = []
64 del a
65 del b
66 assert gc.collect() > 0
67 assert id(gc.garbage[0]) == id_a
69 def test_function():
70 d = {}
71 exec("def f(): pass\n") in d
72 gc.collect()
73 del d
74 assert gc.collect() == 2
77 def test_all():
79 enabled = gc.isenabled()
80 gc.disable()
81 assert not gc.isenabled()
83 test_list()
84 test_dict()
85 test_tuple()
86 test_class()
87 test_instance()
88 test_method()
89 test_finalizer()
90 test_function()
92 # test gc.enable() even if GC is disabled by default
93 gc.enable()
94 assert gc.isenabled()
95 if not enabled:
96 gc.disable()
99 test_all()