From 924e5d55b7c46e5c370365f93240808c9c338d66 Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 10 Dec 1996 16:28:53 +0000 Subject: [PATCH] A test of the `new' module. The new.code() test is fairly bogus since I'm really not sure what the proper inputs are. I do flex the function call though by passing in arguments of the proper type. I don't try to exec the code object that gets returned! --- Lib/test/test_new.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Lib/test/test_new.py diff --git a/Lib/test/test_new.py b/Lib/test/test_new.py new file mode 100644 index 00000000000..89edafdd190 --- /dev/null +++ b/Lib/test/test_new.py @@ -0,0 +1,44 @@ +import sys +import new + +class Eggs: + def get_yolks(self): + return self.yolks + +m = new.module('Spam') +m.Eggs = Eggs +sys.modules['Spam'] = m +import Spam + +def get_more_yolks(self): + return self.yolks + 3 + +C = new.classobj('Spam', (Spam.Eggs,), {'get_more_yolks': get_more_yolks}) +c = new.instance(C, {'yolks': 3}) + +def break_yolks(self): + self.yolks = self.yolks - 2 +im = new.instancemethod(break_yolks, c, C) + +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 +func = new.function(ccode, g) +func() +if g['c'] <> 3: + print 'Could not create a proper function object' + +# bogus test of new.code() +new.code(3, 3, 3, codestr, (), (), (), "", "")