(self)
| 2104 | support.gc_collect() |
| 2105 | |
| 2106 | def test_finalize(self): |
| 2107 | def add(x,y,z): |
| 2108 | res.append(x + y + z) |
| 2109 | return x + y + z |
| 2110 | |
| 2111 | a = self.A() |
| 2112 | |
| 2113 | res = [] |
| 2114 | f = weakref.finalize(a, add, 67, 43, z=89) |
| 2115 | self.assertEqual(f.alive, True) |
| 2116 | self.assertEqual(f.peek(), (a, add, (67,43), {'z':89})) |
| 2117 | self.assertEqual(f(), 199) |
| 2118 | self.assertEqual(f(), None) |
| 2119 | self.assertEqual(f(), None) |
| 2120 | self.assertEqual(f.peek(), None) |
| 2121 | self.assertEqual(f.detach(), None) |
| 2122 | self.assertEqual(f.alive, False) |
| 2123 | self.assertEqual(res, [199]) |
| 2124 | |
| 2125 | res = [] |
| 2126 | f = weakref.finalize(a, add, 67, 43, 89) |
| 2127 | self.assertEqual(f.peek(), (a, add, (67,43,89), {})) |
| 2128 | self.assertEqual(f.detach(), (a, add, (67,43,89), {})) |
| 2129 | self.assertEqual(f(), None) |
| 2130 | self.assertEqual(f(), None) |
| 2131 | self.assertEqual(f.peek(), None) |
| 2132 | self.assertEqual(f.detach(), None) |
| 2133 | self.assertEqual(f.alive, False) |
| 2134 | self.assertEqual(res, []) |
| 2135 | |
| 2136 | res = [] |
| 2137 | f = weakref.finalize(a, add, x=67, y=43, z=89) |
| 2138 | del a |
| 2139 | self._collect_if_necessary() |
| 2140 | self.assertEqual(f(), None) |
| 2141 | self.assertEqual(f(), None) |
| 2142 | self.assertEqual(f.peek(), None) |
| 2143 | self.assertEqual(f.detach(), None) |
| 2144 | self.assertEqual(f.alive, False) |
| 2145 | self.assertEqual(res, [199]) |
| 2146 | |
| 2147 | def test_arg_errors(self): |
| 2148 | def fin(*args, **kwargs): |
nothing calls this directly
no test coverage detected