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, '', '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, (), (), (), "", "") if verbose: print d