summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>1996-12-10 16:28:53 (GMT)
committerBarry Warsaw <barry@python.org>1996-12-10 16:28:53 (GMT)
commit924e5d55b7c46e5c370365f93240808c9c338d66 (patch)
tree26a9adb6e6ea17054f8717bb6694e5b121b72785
parent0f150e41be9d962f8cdfb5e77c9ff3394b84315c (diff)
downloadcpython-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.py44
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>")