Changeset 391 for python/trunk/Lib/test/test_abc.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/test/test_abc.py
r2 r391 4 4 """Unit tests for abc.py.""" 5 5 6 import unittest 6 import unittest, weakref 7 7 from test import test_support 8 8 … … 16 16 @abc.abstractmethod 17 17 def foo(self): pass 18 self.assert Equal(foo.__isabstractmethod__, True)18 self.assertTrue(foo.__isabstractmethod__) 19 19 def bar(self): pass 20 self.assert Equal(hasattr(bar, "__isabstractmethod__"), False)20 self.assertFalse(hasattr(bar, "__isabstractmethod__")) 21 21 22 22 def test_abstractproperty_basics(self): 23 23 @abc.abstractproperty 24 24 def foo(self): pass 25 self.assert Equal(foo.__isabstractmethod__, True)25 self.assertTrue(foo.__isabstractmethod__) 26 26 def bar(self): pass 27 self.assert Equal(hasattr(bar, "__isabstractmethod__"), False)27 self.assertFalse(hasattr(bar, "__isabstractmethod__")) 28 28 29 29 class C: … … 45 45 self.assertEqual(C.__abstractmethods__, set(["foo"])) 46 46 self.assertRaises(TypeError, C) # because foo is abstract 47 self.assert _(isabstract(C))47 self.assertTrue(isabstract(C)) 48 48 class D(C): 49 49 def bar(self): pass # concrete override of concrete 50 50 self.assertEqual(D.__abstractmethods__, set(["foo"])) 51 51 self.assertRaises(TypeError, D) # because foo is still abstract 52 self.assert _(isabstract(D))52 self.assertTrue(isabstract(D)) 53 53 class E(D): 54 54 def foo(self): pass 55 55 self.assertEqual(E.__abstractmethods__, set()) 56 56 E() # now foo is concrete, too 57 self. failIf(isabstract(E))57 self.assertFalse(isabstract(E)) 58 58 class F(E): 59 59 @abstractthing … … 61 61 self.assertEqual(F.__abstractmethods__, set(["bar"])) 62 62 self.assertRaises(TypeError, F) # because bar is abstract now 63 self.assert _(isabstract(F))63 self.assertTrue(isabstract(F)) 64 64 65 65 def test_subclass_oldstyle_class(self): … … 88 88 pass 89 89 b = B() 90 self.assert Equal(issubclass(B, A), False)91 self.assert Equal(issubclass(B, (A,)), False)92 self.assert Equal(isinstance(b, A), False)93 self.assert Equal(isinstance(b, (A,)), False)90 self.assertFalse(issubclass(B, A)) 91 self.assertFalse(issubclass(B, (A,))) 92 self.assertNotIsInstance(b, A) 93 self.assertNotIsInstance(b, (A,)) 94 94 A.register(B) 95 self.assert Equal(issubclass(B, A), True)96 self.assert Equal(issubclass(B, (A,)), True)97 self.assert Equal(isinstance(b, A), True)98 self.assert Equal(isinstance(b, (A,)), True)95 self.assertTrue(issubclass(B, A)) 96 self.assertTrue(issubclass(B, (A,))) 97 self.assertIsInstance(b, A) 98 self.assertIsInstance(b, (A,)) 99 99 class C(B): 100 100 pass 101 101 c = C() 102 self.assert Equal(issubclass(C, A), True)103 self.assert Equal(issubclass(C, (A,)), True)104 self.assert Equal(isinstance(c, A), True)105 self.assert Equal(isinstance(c, (A,)), True)102 self.assertTrue(issubclass(C, A)) 103 self.assertTrue(issubclass(C, (A,))) 104 self.assertIsInstance(c, A) 105 self.assertIsInstance(c, (A,)) 106 106 107 107 def test_isinstance_invalidation(self): … … 111 111 pass 112 112 b = B() 113 self.assert Equal(isinstance(b, A), False)114 self.assert Equal(isinstance(b, (A,)), False)113 self.assertFalse(isinstance(b, A)) 114 self.assertFalse(isinstance(b, (A,))) 115 115 A.register(B) 116 self.assert Equal(isinstance(b, A), True)117 self.assert Equal(isinstance(b, (A,)), True)116 self.assertTrue(isinstance(b, A)) 117 self.assertTrue(isinstance(b, (A,))) 118 118 119 119 def test_registration_builtins(self): … … 121 121 __metaclass__ = abc.ABCMeta 122 122 A.register(int) 123 self.assert Equal(isinstance(42, A), True)124 self.assert Equal(isinstance(42, (A,)), True)125 self.assert Equal(issubclass(int, A), True)126 self.assert Equal(issubclass(int, (A,)), True)123 self.assertIsInstance(42, A) 124 self.assertIsInstance(42, (A,)) 125 self.assertTrue(issubclass(int, A)) 126 self.assertTrue(issubclass(int, (A,))) 127 127 class B(A): 128 128 pass 129 129 B.register(basestring) 130 self.assert Equal(isinstance("", A), True)131 self.assert Equal(isinstance("", (A,)), True)132 self.assert Equal(issubclass(str, A), True)133 self.assert Equal(issubclass(str, (A,)), True)130 self.assertIsInstance("", A) 131 self.assertIsInstance("", (A,)) 132 self.assertTrue(issubclass(str, A)) 133 self.assertTrue(issubclass(str, (A,))) 134 134 135 135 def test_registration_edge_cases(self): … … 150 150 C.register(B) # ok 151 151 152 def test_register_non_class(self): 153 class A(object): 154 __metaclass__ = abc.ABCMeta 155 self.assertRaisesRegexp(TypeError, "Can only register classes", 156 A.register, 4) 157 152 158 def test_registration_transitiveness(self): 153 159 class A: 154 160 __metaclass__ = abc.ABCMeta 155 self. failUnless(issubclass(A, A))156 self. failUnless(issubclass(A, (A,)))161 self.assertTrue(issubclass(A, A)) 162 self.assertTrue(issubclass(A, (A,))) 157 163 class B: 158 164 __metaclass__ = abc.ABCMeta 159 self. failIf(issubclass(A, B))160 self. failIf(issubclass(A, (B,)))161 self. failIf(issubclass(B, A))162 self. failIf(issubclass(B, (A,)))165 self.assertFalse(issubclass(A, B)) 166 self.assertFalse(issubclass(A, (B,))) 167 self.assertFalse(issubclass(B, A)) 168 self.assertFalse(issubclass(B, (A,))) 163 169 class C: 164 170 __metaclass__ = abc.ABCMeta … … 166 172 class B1(B): 167 173 pass 168 self. failUnless(issubclass(B1, A))169 self. failUnless(issubclass(B1, (A,)))174 self.assertTrue(issubclass(B1, A)) 175 self.assertTrue(issubclass(B1, (A,))) 170 176 class C1(C): 171 177 pass 172 178 B1.register(C1) 173 self. failIf(issubclass(C, B))174 self. failIf(issubclass(C, (B,)))175 self. failIf(issubclass(C, B1))176 self. failIf(issubclass(C, (B1,)))177 self. failUnless(issubclass(C1, A))178 self. failUnless(issubclass(C1, (A,)))179 self. failUnless(issubclass(C1, B))180 self. failUnless(issubclass(C1, (B,)))181 self. failUnless(issubclass(C1, B1))182 self. failUnless(issubclass(C1, (B1,)))179 self.assertFalse(issubclass(C, B)) 180 self.assertFalse(issubclass(C, (B,))) 181 self.assertFalse(issubclass(C, B1)) 182 self.assertFalse(issubclass(C, (B1,))) 183 self.assertTrue(issubclass(C1, A)) 184 self.assertTrue(issubclass(C1, (A,))) 185 self.assertTrue(issubclass(C1, B)) 186 self.assertTrue(issubclass(C1, (B,))) 187 self.assertTrue(issubclass(C1, B1)) 188 self.assertTrue(issubclass(C1, (B1,))) 183 189 C1.register(int) 184 190 class MyInt(int): 185 191 pass 186 self. failUnless(issubclass(MyInt, A))187 self. failUnless(issubclass(MyInt, (A,)))188 self. failUnless(isinstance(42, A))189 self. failUnless(isinstance(42, (A,)))192 self.assertTrue(issubclass(MyInt, A)) 193 self.assertTrue(issubclass(MyInt, (A,))) 194 self.assertIsInstance(42, A) 195 self.assertIsInstance(42, (A,)) 190 196 191 197 def test_all_new_methods_are_called(self): … … 203 209 self.assertEqual(B.counter, 1) 204 210 211 def test_cache_leak(self): 212 # See issue #2521. 213 class A(object): 214 __metaclass__ = abc.ABCMeta 215 @abc.abstractmethod 216 def f(self): 217 pass 218 class C(A): 219 def f(self): 220 A.f(self) 221 r = weakref.ref(C) 222 # Trigger cache. 223 C().f() 224 del C 225 test_support.gc_collect() 226 self.assertEqual(r(), None) 205 227 206 228 def test_main():
Note:
See TracChangeset
for help on using the changeset viewer.