Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_abc.py @ 78069:a8aa77458e12 3.2
Add c_size_t and c_ssize_t to the ctypes summary table.
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 12 Jul 2012 20:31:50 +0200 |
| parents | 3c9232a684ae |
| children | b39270c6b8d1 |
| rev | line source |
|---|---|
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
1 # Copyright 2007 Google, Inc. All Rights Reserved. |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
2 # Licensed to PSF under a Contributor Agreement. |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
3 |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
4 """Unit tests for abc.py.""" |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
5 |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
6 import unittest |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
45636
diff
changeset
|
7 from test import support |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
8 |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
9 import abc |
|
45636
25406b3ff97a
Merged revisions 61203-61204 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
45471
diff
changeset
|
10 from inspect import isabstract |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
11 |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
12 |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
13 class TestABC(unittest.TestCase): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
14 |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
15 def test_abstractmethod_basics(self): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
16 @abc.abstractmethod |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
17 def foo(self): pass |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
18 self.assertTrue(foo.__isabstractmethod__) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
19 def bar(self): pass |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
20 self.assertFalse(hasattr(bar, "__isabstractmethod__")) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
21 |
|
42415
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
22 def test_abstractproperty_basics(self): |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
23 @abc.abstractproperty |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
24 def foo(self): pass |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
25 self.assertTrue(foo.__isabstractmethod__) |
|
42415
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
26 def bar(self): pass |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
27 self.assertFalse(hasattr(bar, "__isabstractmethod__")) |
|
42415
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
28 |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
29 class C(metaclass=abc.ABCMeta): |
|
42415
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
30 @abc.abstractproperty |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
31 def foo(self): return 3 |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
32 class D(C): |
|
42415
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
33 @property |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
34 def foo(self): return super().foo |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
35 self.assertEqual(D().foo, 3) |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
36 |
|
64094
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
37 def test_abstractclassmethod_basics(self): |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
38 @abc.abstractclassmethod |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
39 def foo(cls): pass |
|
64095
745bd639ed4d
use assertTrue/assertFalse
Benjamin Peterson <benjamin@python.org>
parents:
64094
diff
changeset
|
40 self.assertTrue(foo.__isabstractmethod__) |
|
64094
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
41 @classmethod |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
42 def bar(cls): pass |
|
64095
745bd639ed4d
use assertTrue/assertFalse
Benjamin Peterson <benjamin@python.org>
parents:
64094
diff
changeset
|
43 self.assertFalse(hasattr(bar, "__isabstractmethod__")) |
|
64094
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
44 |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
45 class C(metaclass=abc.ABCMeta): |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
46 @abc.abstractclassmethod |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
47 def foo(cls): return cls.__name__ |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
48 self.assertRaises(TypeError, C) |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
49 class D(C): |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
50 @classmethod |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
51 def foo(cls): return super().foo() |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
52 self.assertEqual(D.foo(), 'D') |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
53 self.assertEqual(D().foo(), 'D') |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
54 |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
55 def test_abstractstaticmethod_basics(self): |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
56 @abc.abstractstaticmethod |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
57 def foo(): pass |
|
64095
745bd639ed4d
use assertTrue/assertFalse
Benjamin Peterson <benjamin@python.org>
parents:
64094
diff
changeset
|
58 self.assertTrue(foo.__isabstractmethod__) |
|
64094
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
59 @staticmethod |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
60 def bar(): pass |
|
64095
745bd639ed4d
use assertTrue/assertFalse
Benjamin Peterson <benjamin@python.org>
parents:
64094
diff
changeset
|
61 self.assertFalse(hasattr(bar, "__isabstractmethod__")) |
|
64094
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
62 |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
63 class C(metaclass=abc.ABCMeta): |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
64 @abc.abstractstaticmethod |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
65 def foo(): return 3 |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
66 self.assertRaises(TypeError, C) |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
67 class D(C): |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
68 @staticmethod |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
69 def foo(): return 4 |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
70 self.assertEqual(D.foo(), 4) |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
71 self.assertEqual(D().foo(), 4) |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
72 |
|
42415
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
73 def test_abstractmethod_integration(self): |
|
64094
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
74 for abstractthing in [abc.abstractmethod, abc.abstractproperty, |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
75 abc.abstractclassmethod, |
|
b91059e59d0d
add support for abstract class and static methods #5867
Benjamin Peterson <benjamin@python.org>
parents:
58533
diff
changeset
|
76 abc.abstractstaticmethod]: |
|
42415
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
77 class C(metaclass=abc.ABCMeta): |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
78 @abstractthing |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
79 def foo(self): pass # abstract |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
80 def bar(self): pass # concrete |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
81 self.assertEqual(C.__abstractmethods__, {"foo"}) |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
82 self.assertRaises(TypeError, C) # because foo is abstract |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
83 self.assertTrue(isabstract(C)) |
|
42415
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
84 class D(C): |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
85 def bar(self): pass # concrete override of concrete |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
86 self.assertEqual(D.__abstractmethods__, {"foo"}) |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
87 self.assertRaises(TypeError, D) # because foo is still abstract |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
88 self.assertTrue(isabstract(D)) |
|
42415
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
89 class E(D): |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
90 def foo(self): pass |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
91 self.assertEqual(E.__abstractmethods__, set()) |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
92 E() # now foo is concrete, too |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
93 self.assertFalse(isabstract(E)) |
|
42415
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
94 class F(E): |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
95 @abstractthing |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
96 def bar(self): pass # abstract override of concrete |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
97 self.assertEqual(F.__abstractmethods__, {"bar"}) |
|
a6d26a4d672d
Tests for @abstractproperty by Jeffrey Yasskin.
Guido van Rossum <guido@python.org>
parents:
42084
diff
changeset
|
98 self.assertRaises(TypeError, F) # because bar is abstract now |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
99 self.assertTrue(isabstract(F)) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
100 |
|
65066
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
101 def test_metaclass_abc(self): |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
102 # Metaclasses can be ABCs, too. |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
103 class A(metaclass=abc.ABCMeta): |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
104 @abc.abstractmethod |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
105 def x(self): |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
106 pass |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
107 self.assertEqual(A.__abstractmethods__, {"x"}) |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
108 class meta(type, A): |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
109 def x(self): |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
110 return 1 |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
111 class C(metaclass=meta): |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
112 pass |
|
394e25382a59
Merged revisions 85154,85182 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
64098
diff
changeset
|
113 |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
114 def test_registration_basics(self): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
115 class A(metaclass=abc.ABCMeta): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
116 pass |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44067
diff
changeset
|
117 class B(object): |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
118 pass |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
119 b = B() |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
120 self.assertFalse(issubclass(B, A)) |
|
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
121 self.assertFalse(issubclass(B, (A,))) |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
122 self.assertNotIsInstance(b, A) |
|
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
123 self.assertNotIsInstance(b, (A,)) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
124 A.register(B) |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
125 self.assertTrue(issubclass(B, A)) |
|
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
126 self.assertTrue(issubclass(B, (A,))) |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
127 self.assertIsInstance(b, A) |
|
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
128 self.assertIsInstance(b, (A,)) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
129 class C(B): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
130 pass |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
131 c = C() |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
132 self.assertTrue(issubclass(C, A)) |
|
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
133 self.assertTrue(issubclass(C, (A,))) |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
134 self.assertIsInstance(c, A) |
|
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
135 self.assertIsInstance(c, (A,)) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
136 |
|
45333
e70f56cf6972
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44568
diff
changeset
|
137 def test_isinstance_invalidation(self): |
|
e70f56cf6972
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44568
diff
changeset
|
138 class A(metaclass=abc.ABCMeta): |
|
e70f56cf6972
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44568
diff
changeset
|
139 pass |
|
e70f56cf6972
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44568
diff
changeset
|
140 class B: |
|
e70f56cf6972
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44568
diff
changeset
|
141 pass |
|
e70f56cf6972
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44568
diff
changeset
|
142 b = B() |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
143 self.assertFalse(isinstance(b, A)) |
|
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
144 self.assertFalse(isinstance(b, (A,))) |
|
45333
e70f56cf6972
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44568
diff
changeset
|
145 A.register(B) |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
146 self.assertTrue(isinstance(b, A)) |
|
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
147 self.assertTrue(isinstance(b, (A,))) |
|
45333
e70f56cf6972
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44568
diff
changeset
|
148 |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
149 def test_registration_builtins(self): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
150 class A(metaclass=abc.ABCMeta): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
151 pass |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
152 A.register(int) |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
153 self.assertIsInstance(42, A) |
|
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
154 self.assertIsInstance(42, (A,)) |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
155 self.assertTrue(issubclass(int, A)) |
|
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
156 self.assertTrue(issubclass(int, (A,))) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
157 class B(A): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
158 pass |
|
43577
ace45b361e87
Patch# 1258 by Christian Heimes: kill basestring.
Guido van Rossum <guido@python.org>
parents:
43334
diff
changeset
|
159 B.register(str) |
|
ace45b361e87
Patch# 1258 by Christian Heimes: kill basestring.
Guido van Rossum <guido@python.org>
parents:
43334
diff
changeset
|
160 class C(str): pass |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
161 self.assertIsInstance("", A) |
|
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
162 self.assertIsInstance("", (A,)) |
|
64098
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
163 self.assertTrue(issubclass(str, A)) |
|
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
164 self.assertTrue(issubclass(str, (A,))) |
|
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
165 self.assertTrue(issubclass(C, A)) |
|
60a4777a73a0
Merged revisions 84125-84126 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
58535
diff
changeset
|
166 self.assertTrue(issubclass(C, (A,))) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
167 |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
168 def test_registration_edge_cases(self): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
169 class A(metaclass=abc.ABCMeta): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
170 pass |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
171 A.register(A) # should pass silently |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
172 class A1(A): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
173 pass |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
174 self.assertRaises(RuntimeError, A1.register, A) # cycles not allowed |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44067
diff
changeset
|
175 class B(object): |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
176 pass |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
177 A1.register(B) # ok |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
178 A1.register(B) # should pass silently |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
179 class C(A): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
180 pass |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
181 A.register(C) # should pass silently |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
182 self.assertRaises(RuntimeError, C.register, A) # cycles not allowed |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
183 C.register(B) # ok |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
184 |
|
58535
20070880ea48
Merged revisions 77791 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
55593
diff
changeset
|
185 def test_register_non_class(self): |
|
20070880ea48
Merged revisions 77791 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
55593
diff
changeset
|
186 class A(metaclass=abc.ABCMeta): |
|
20070880ea48
Merged revisions 77791 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
55593
diff
changeset
|
187 pass |
|
66581
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65065
diff
changeset
|
188 self.assertRaisesRegex(TypeError, "Can only register classes", |
|
38bec90fd8ab
#10273: Rename assertRegexpMatches and assertRaisesRegexp to assertRegex and assertRaisesRegex.
Ezio Melotti <ezio.melotti@gmail.com>
parents:
65065
diff
changeset
|
189 A.register, 4) |
|
58535
20070880ea48
Merged revisions 77791 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
55593
diff
changeset
|
190 |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
191 def test_registration_transitiveness(self): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
192 class A(metaclass=abc.ABCMeta): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
193 pass |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
194 self.assertTrue(issubclass(A, A)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
195 self.assertTrue(issubclass(A, (A,))) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
196 class B(metaclass=abc.ABCMeta): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
197 pass |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
198 self.assertFalse(issubclass(A, B)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
199 self.assertFalse(issubclass(A, (B,))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
200 self.assertFalse(issubclass(B, A)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
201 self.assertFalse(issubclass(B, (A,))) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
202 class C(metaclass=abc.ABCMeta): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
203 pass |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
204 A.register(B) |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
205 class B1(B): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
206 pass |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
207 self.assertTrue(issubclass(B1, A)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
208 self.assertTrue(issubclass(B1, (A,))) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
209 class C1(C): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
210 pass |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
211 B1.register(C1) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
212 self.assertFalse(issubclass(C, B)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
213 self.assertFalse(issubclass(C, (B,))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
214 self.assertFalse(issubclass(C, B1)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
215 self.assertFalse(issubclass(C, (B1,))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
216 self.assertTrue(issubclass(C1, A)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
217 self.assertTrue(issubclass(C1, (A,))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
218 self.assertTrue(issubclass(C1, B)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
219 self.assertTrue(issubclass(C1, (B,))) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
220 self.assertTrue(issubclass(C1, B1)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
221 self.assertTrue(issubclass(C1, (B1,))) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
222 C1.register(int) |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
223 class MyInt(int): |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
224 pass |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
225 self.assertTrue(issubclass(MyInt, A)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48875
diff
changeset
|
226 self.assertTrue(issubclass(MyInt, (A,))) |
|
58473
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
227 self.assertIsInstance(42, A) |
|
71acd4482e65
Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
228 self.assertIsInstance(42, (A,)) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
229 |
|
43334
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
230 def test_all_new_methods_are_called(self): |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
231 class A(metaclass=abc.ABCMeta): |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
232 pass |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44067
diff
changeset
|
233 class B(object): |
|
43334
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
234 counter = 0 |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
235 def __new__(cls): |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
236 B.counter += 1 |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
237 return super().__new__(cls) |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
238 class C(A, B): |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
239 pass |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
240 self.assertEqual(B.counter, 0) |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
241 C() |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
242 self.assertEqual(B.counter, 1) |
|
e82876a621b5
Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
Guido van Rossum <guido@python.org>
parents:
42415
diff
changeset
|
243 |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
244 |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
245 def test_main(): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
45636
diff
changeset
|
246 support.run_unittest(TestABC) |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
247 |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
248 |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
249 if __name__ == "__main__": |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
diff
changeset
|
250 unittest.main() |
