[Subversion] / PyProtocols / src / protocols / tests / test_advice.py  

Diff of /PyProtocols/src/protocols/tests/test_advice.py

Parent Directory | Revision Log

version 23, Sun May 25 17:21:48 2003 UTC version 161, Wed Nov 10 04:19:56 2004 UTC
Line 2 
Line 2 
   
 from unittest import TestCase, makeSuite, TestSuite  from unittest import TestCase, makeSuite, TestSuite
 from protocols.advice import *  from protocols.advice import *
   import dispatch
 import sys  import sys
   from types import InstanceType
   
   
   def ping(log, value):
   
       def pong(klass):
           log.append((value,klass))
           return [klass]
   
       addClassAdvisor(pong)
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 class SuperTest(TestCase):  class SuperTest(TestCase):
Line 39 
Line 73 
         assert ClassOfSubMeta().foo(1)==2          assert ClassOfSubMeta().foo(1)==2
   
   
   
   
   
   
   
   
   
     def checkPropSuper(self):      def checkPropSuper(self):
   
         class Base(object):          class Base(object):
Line 59 
Line 100 
         assert ob.foo == 2          assert ob.foo == 2
   
   
       def checkSuperNotFound(self):
          class Base(object):
              pass
   
          b = Base()
          try:
              supermeta(Base,b).foo
          except AttributeError:
              pass
          else:
              raise AssertionError("Shouldn't have returned a value")
   
   
   
Line 70 
Line 121 
   
   
   
   class DecoratorTests(TestCase):
   
       def checkAssignAdvice(self):
   
           log = []
           def track(f,k,v,d):
               log.append((f,k,v))
               if k in f.f_locals:
                   del f.f_locals[k]   # simulate old-style advisor
   
           add_assignment_advisor(track,frame=sys._getframe())
           test_var = 1
           self.assertEqual(log, [(sys._getframe(),'test_var',1)])
           log = []
           add_assignment_advisor(track,1)
           test2 = 42
           self.assertEqual(log, [(sys._getframe(),'test2',42)])
   
           # Try doing double duty, redefining an existing variable...
           log = []
           add_assignment_advisor(track,1)
           add_assignment_advisor(track,1)
   
           test2 = 42
           self.assertEqual(log, [(sys._getframe(),'test2',42)]*2)
   
   
       def checkAs(self):
   
           def f(): pass
   
           [dispatch.as(lambda x: [x])]
           f1 = f
   
           self.assertEqual(f1, [f])
   
           [dispatch.as(list, lambda x: (x,))]
           f1 = f
           self.assertEqual(f1, [f])
   
   
       def check24DecoratorMode(self):
   
           log = []
           def track(f,k,v,d):
               log.append((f,k,v))
               return v
   
           def foo(x): pass
   
           add_assignment_advisor(track,1)(foo)
           x = 1
   
           self.assertEqual(log, [(sys._getframe(),'foo',foo)])
   
   
   
   
   
   
   
   
   
   
   
   
Line 80 
Line 194 
   
   
   
 def ping(log, value):  
   
     def pong(klass):  
         log.append((value,klass))  
         return [klass]  
   
     addClassAdvisor(pong)  
   
   
   
Line 94 
Line 203 
   
   
   
   moduleLevelFrameInfo = getFrameInfo(sys._getframe())
   
   class FrameInfoTest(TestCase):
   
       classLevelFrameInfo = getFrameInfo(sys._getframe())
   
       def checkModuleInfo(self):
           kind,module,f_locals,f_globals = moduleLevelFrameInfo
           assert kind=="module"
           for d in module.__dict__, f_locals, f_globals:
               assert d is globals()
   
       def checkClassInfo(self):
           kind,module,f_locals,f_globals = self.classLevelFrameInfo
           assert kind=="class"
           assert f_locals['classLevelFrameInfo'] is self.classLevelFrameInfo
           for d in module.__dict__, f_globals:
               assert d is globals()
   
   
       def checkCallInfo(self):
           kind,module,f_locals,f_globals = getFrameInfo(sys._getframe())
           assert kind=="function call"
           assert f_locals is locals() # ???
           for d in module.__dict__, f_globals:
               assert d is globals()
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   class MROTests(TestCase):
   
       def checkStdMRO(self):
           class foo(object): pass
           class bar(foo): pass
           class baz(foo): pass
           class spam(bar,baz): pass
           assert getMRO(spam) is spam.__mro__
   
       def checkClassicMRO(self):
           class foo: pass
           class bar(foo): pass
           class baz(foo): pass
           class spam(bar,baz): pass
           basicMRO = [spam,bar,foo,baz,foo]
           assert list(getMRO(spam)) == basicMRO
           assert list(getMRO(spam,True)) == basicMRO+[InstanceType,object]
   
   
   
Line 214 
Line 378 
         assert determineMetaclass((meta,type))==metameta          assert determineMetaclass((meta,type))==metameta
   
   
   
   
   
 TestClasses = (  TestClasses = (
     SuperTest, AdviceTests,      SuperTest, DecoratorTests, AdviceTests, FrameInfoTest, MROTests,
 )  )
   
 def test_suite():  def test_suite():
Line 241 
Line 408 
   
   
   
   
   
   


Generate output suitable for use with a patch program
Legend:
Removed from v.23  
changed lines
  Added in v.161

cvs-admin@eby-sarna.com

Powered by ViewCVS 1.0-dev

ViewCVS and CVS Help