[Zope-Checkins] CVS: Zope3/lib/python/Zope/ComponentArchitecture/tests - testIToIRegistry.py:1.3

Jim Fulton jim@zope.com
Tue, 11 Jun 2002 19:10:45 -0400


Update of /cvs-repository/Zope3/lib/python/Zope/ComponentArchitecture/tests
In directory cvs.zope.org:/tmp/cvs-serv8937/tests

Modified Files:
	testIToIRegistry.py 
Log Message:
Fixed a bug in IToIRegistry that caused incorrent components to be
looked up.  

For example:

  Component 1 is registered for Interface (i.e. default)

  Component 2 is registered for I2.

  No component is registered for I3.

  An object implements I3, I2, in that order.

  When looking up an adapter or view, the default component, Componet
  1, would be found, rather than the more specific component,
  Component 2.



=== Zope3/lib/python/Zope/ComponentArchitecture/tests/testIToIRegistry.py 1.2 => 1.3 ===
         self.assertRaises(Invalid, reg.register, I2, None)
 
+    def testBadLookupOrder(self):
+
+        class P(Interface): pass
+        class R1(Interface): pass
+        class R2(R1): pass
+        class R3(R1): pass
+        class C1: __implements__ = P
+        class C3: __implements__ = P
+        class I: __implements__ = R2, R3
+        reg = IToIRegistry()
+        reg.register(R1, P, C1)
+        reg.register(R3, P, C3)
+
+        result = reg.getForObject(I(), P)[0]
+        self.assertEqual(result, C3)
+        
+
 def test_suite():
     loader=unittest.TestLoader()
     return loader.loadTestsFromTestCase(Test)