home *** CD-ROM | disk | FTP | other *** search
- from test_support import verbose
- import sys
- import new
-
- class Eggs:
- def get_yolks(self):
- return self.yolks
-
- print 'new.module()'
- m = new.module('Spam')
- if verbose:
- print m
- m.Eggs = Eggs
- sys.modules['Spam'] = m
- import Spam
-
- def get_more_yolks(self):
- return self.yolks + 3
-
- print 'new.classobj()'
- C = new.classobj('Spam', (Spam.Eggs,), {'get_more_yolks': get_more_yolks})
- if verbose:
- print C
- print 'new.instance()'
- c = new.instance(C, {'yolks': 3})
- if verbose:
- print c
-
- def break_yolks(self):
- self.yolks = self.yolks - 2
- print 'new.instancemethod()'
- im = new.instancemethod(break_yolks, c, C)
- if verbose:
- print im
-
- if c.get_yolks() <> 3 and c.get_more_yolks() <> 6:
- print 'Broken call of hand-crafted class instance'
- im()
- if c.get_yolks() <> 1 and c.get_more_yolks() <> 4:
- print 'Broken call of hand-crafted instance method'
-
- codestr = '''
- a = 1
- b = 2
- c = a + b
- '''
-
- ccode = compile(codestr, '<string>', 'exec')
- g = {'c': 0, '__builtins__': __builtins__}
- # this test could be more robust
- print 'new.function()'
- func = new.function(ccode, g)
- if verbose:
- print func
- func()
- if g['c'] <> 3:
- print 'Could not create a proper function object'
-
- # bogus test of new.code()
- print 'new.code()'
- d = new.code(3, 3, 3, 3, codestr, (), (), (), "<string>", "<name>", 1, "")
- if verbose:
- print d
-