diff options
author | Barry Warsaw <barry@python.org> | 1996-12-10 16:28:53 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 1996-12-10 16:28:53 (GMT) |
commit | 924e5d55b7c46e5c370365f93240808c9c338d66 (patch) | |
tree | 26a9adb6e6ea17054f8717bb6694e5b121b72785 | |
parent | 0f150e41be9d962f8cdfb5e77c9ff3394b84315c (diff) | |
download | cpython-924e5d55b7c46e5c370365f93240808c9c338d66.zip cpython-924e5d55b7c46e5c370365f93240808c9c338d66.tar.gz cpython-924e5d55b7c46e5c370365f93240808c9c338d66.tar.bz2 |
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!
-rw-r--r-- | Lib/test/test_new.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/Lib/test/test_new.py b/Lib/test/test_new.py new file mode 100644 index 0000000..89edafd --- /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, '<string>', '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, (), (), (), "<string>", "<name>") |