diff options
author | Sylvain <syt@logilab.fr> | 2007-09-28 16:49:31 +0200 |
---|---|---|
committer | Sylvain <syt@logilab.fr> | 2007-09-28 16:49:31 +0200 |
commit | f1300b194056ad5b76eb83b135a915dcf09a37a0 (patch) | |
tree | 04280cde4a5655dfaf4474ea938dd6f0517e781b | |
parent | db7bde02faf4be871a20e04cd78478304856d87e (diff) | |
download | logilab-common-f1300b194056ad5b76eb83b135a915dcf09a37a0.tar.gz |
test and fix
-rw-r--r-- | interface.py | 1 | ||||
-rw-r--r-- | test/unittest_interface.py | 11 |
2 files changed, 10 insertions, 2 deletions
diff --git a/interface.py b/interface.py index 78f0afa..325e470 100644 --- a/interface.py +++ b/interface.py @@ -59,6 +59,7 @@ def extend(klass, interface, _recurs=False): kimplementsklass = type(kimplements) kimplements = list(kimplements) except AttributeError: + kimplementsklass = tuple kimplements = [] kimplements.append(interface) klass.__implements__ = kimplementsklass(kimplements) diff --git a/test/unittest_interface.py b/test/unittest_interface.py index 22992c3..c708ff5 100644 --- a/test/unittest_interface.py +++ b/test/unittest_interface.py @@ -22,6 +22,7 @@ class C2(B): class D(C1): __implements__ = () +class Z(object): pass class ExtendTC(TestCase): @@ -33,8 +34,6 @@ class ExtendTC(TestCase): dimpl = D.__implements__ def test_base(self): - extend(A, IFace1) - self.failUnless(A.__implements__ is aimpl) extend(A, IFace2) self.failUnlessEqual(A.__implements__, (IFace1, IFace2)) self.failUnlessEqual(B.__implements__, (IFace1, IFace2)) @@ -44,6 +43,14 @@ class ExtendTC(TestCase): self.failUnless(C2.__implements__ is c2impl) self.failUnlessEqual(D.__implements__, (IFace2,)) + def test_already_impl(self): + extend(A, IFace1) + self.failUnless(A.__implements__ is aimpl) + + def test_no_impl(self): + extend(Z, IFace1) + self.failUnlessEqual(Z.__implements__, (IFace1,)) + def test_notimpl_explicit(self): extend(C1, IFace3) self.failUnless(C1.__implements__ is c1impl) |