[Zope3-checkins] CVS: Zope3/lib/python/Zope/ContextWrapper/tests - testSimpleMethodWrapper.py:1.9

Jim Fulton jim@zope.com
Thu, 5 Dec 2002 11:55:23 -0500


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

Modified Files:
	testSimpleMethodWrapper.py 
Log Message:
Added ContextSuper to call base methods that are context methods.


=== Zope3/lib/python/Zope/ContextWrapper/tests/testSimpleMethodWrapper.py 1.8 => 1.9 ===
--- Zope3/lib/python/Zope/ContextWrapper/tests/testSimpleMethodWrapper.py:1.8	Tue Dec  3 16:54:09 2002
+++ Zope3/lib/python/Zope/ContextWrapper/tests/testSimpleMethodWrapper.py	Thu Dec  5 11:55:23 2002
@@ -23,7 +23,8 @@
 #
 from Zope.ContextWrapper import \
         Wrapper, wrapperTypes, ContextMethod, \
-        ContextProperty, ContextGetProperty, ContextSetProperty
+        ContextProperty, ContextGetProperty, ContextSetProperty, \
+        ContextSuper
 
 class NewStyleClass(object):
 
@@ -58,6 +59,9 @@
     thisIsAContextGetProperty = ContextGetProperty(_getter, _setter)
     thisIsAContextSetProperty = ContextSetProperty(_getter, _setter)
 
+    def this_is_any_old_method(self):
+        return 'base', self
+
 class NewStyleClassWithSlots(object):
     __slots__ = ['result']
 
@@ -93,6 +97,9 @@
     thisIsAContextProperty = ContextProperty(_getter, _setter)
     thisIsAContextGetProperty = ContextGetProperty(_getter, _setter)
     thisIsAContextSetProperty = ContextSetProperty(_getter, _setter)
+
+    def this_is_any_old_method(self):
+        return 'base', self
     
    
 class ClassicClass:
@@ -131,9 +138,11 @@
 
 class TestClassicClass(unittest.TestCase):
 
+    _class = ClassicClass
+
     def createObject(self):
         # to be overridden in tests that subclass this one
-        return ClassicClass()
+        return self._class()
 
     def setUp(self):
         unittest.TestCase.setUp(self)
@@ -226,12 +235,11 @@
     def testNotFound(self):
         self.assertRaises(AttributeError,
                           getattr, self.wrapped, 'noSuchAttribute')
-
+        
 
 class TestNewStyleClassWithSlots(TestClassicClass):
 
-    def createObject(self):
-        return NewStyleClassWithSlots()
+    _class = NewStyleClassWithSlots
 
     # Setting properties doesn't work with classic classes,
     # so this class has extra tests for setting properties in
@@ -262,10 +270,29 @@
         self.assert_(result_obj is self.wrapped)
         self.assert_(result_value is value)
 
+
+    def testContextSuper(self):
+
+        def this_is_any_old_method(self):
+            return 'sub', self
+        
+        Sub = type('sub', (self._class, ), {
+            'this_is_any_old_method': this_is_any_old_method,
+            })
+
+        inst = Wrapper(Sub())
+        name, rinst = inst.this_is_any_old_method()
+        self.assertEqual(name,  'sub')
+        self.assert_(rinst is not inst)
+
+        name, rinst = ContextSuper(Sub, inst).this_is_any_old_method()
+        self.assertEqual(name,  'base')
+        self.assert_(rinst is inst)
+
+
 class TestNewStyleClass(TestNewStyleClassWithSlots):
 
-    def createObject(self):
-        return NewStyleClass()
+    _class = NewStyleClass
 
     def testGetContextProperty_w_name_in_dict(self):
         self.obj.__dict__['thisIsAContextProperty'] = False
@@ -406,6 +433,7 @@
         self.assert_(hasattr(wrapped, '__getitem__'))
         self.assertEqual(wrapped[0], 23)
         self.assertEqual(wrapped.__getitem__(0), 23)
+
 
 def test_suite():
     return unittest.TestSuite((