root / logilab.pylintinstaller / logilab / common / test / unittest_interface.py

Revision 202:d67e86292521, 1.9 kB (checked in by tziade@…, 11 months ago)

added logilab.pylintinstaller

Line 
1from logilab.common.testlib import TestCase, unittest_main
2from logilab.common.interface import *
3
4class IFace1(Interface): pass
5class IFace2(Interface): pass
6class IFace3(Interface): pass
7
8
9class A(object):
10    __implements__ = (IFace1,)
11
12
13class B(A): pass
14
15
16class C1(B):
17    __implements__ = list(B.__implements__) + [IFace3]
18   
19class C2(B):
20    __implements__ = B.__implements__ + (IFace2,)
21   
22class D(C1):
23    __implements__ = ()
24
25class Z(object): pass
26
27class ExtendTC(TestCase):
28
29    def setUp(self):
30        global aimpl, c1impl, c2impl, dimpl
31        aimpl = A.__implements__
32        c1impl = C1.__implements__
33        c2impl = C2.__implements__
34        dimpl = D.__implements__
35       
36    def test_base(self):
37        extend(A, IFace2)
38        self.failUnlessEqual(A.__implements__, (IFace1, IFace2)) 
39        self.failUnlessEqual(B.__implements__, (IFace1, IFace2))
40        self.failUnless(B.__implements__ is A.__implements__)
41        self.failUnlessEqual(C1.__implements__, [IFace1, IFace3, IFace2])
42        self.failUnlessEqual(C2.__implements__, (IFace1, IFace2))
43        self.failUnless(C2.__implements__ is c2impl)
44        self.failUnlessEqual(D.__implements__, (IFace2,))
45
46    def test_already_impl(self):
47        extend(A, IFace1)
48        self.failUnless(A.__implements__ is aimpl)
49
50    def test_no_impl(self):
51        extend(Z, IFace1)
52        self.failUnlessEqual(Z.__implements__, (IFace1,))
53       
54    def test_notimpl_explicit(self):
55        extend(C1, IFace3)
56        self.failUnless(C1.__implements__ is c1impl)
57        self.failUnless(D.__implements__ is dimpl)
58
59
60    def test_nonregr_implements_baseinterface(self):
61        class SubIFace(IFace1): pass
62        class X(object):
63            __implements__ = (SubIFace,)
64
65        self.failUnless(SubIFace.is_implemented_by(X))
66        self.failUnless(IFace1.is_implemented_by(X))
67
68
69if __name__ == '__main__':
70    unittest_main()
Note: See TracBrowser for help on using the browser.