summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_extcall.py
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2000-03-28 23:51:17 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2000-03-28 23:51:17 (GMT)
commitaed0d8deb0c810db32f5370c0f089266bb349962 (patch)
tree07b597710b2f24df3ff86c77dcfa100ee4b1872d /Lib/test/test_extcall.py
parent7690151c7e95f38b91a9c572ce29b4d8a4ca671d (diff)
downloadcpython-aed0d8deb0c810db32f5370c0f089266bb349962.zip
cpython-aed0d8deb0c810db32f5370c0f089266bb349962.tar.gz
cpython-aed0d8deb0c810db32f5370c0f089266bb349962.tar.bz2
add test cases for Greg Ewing's extended call syntax patch
Diffstat (limited to 'Lib/test/test_extcall.py')
-rw-r--r--Lib/test/test_extcall.py99
1 files changed, 99 insertions, 0 deletions
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py
new file mode 100644
index 0000000..422ccea
--- /dev/null
+++ b/Lib/test/test_extcall.py
@@ -0,0 +1,99 @@
+from UserList import UserList
+
+def f(*a, **k):
+ print a, k
+
+def g(x, *y, **z):
+ print x, y, z
+
+def h(j=1, a=2, h=3):
+ print j, a, h
+
+f()
+f(1)
+f(1, 2)
+f(1, 2, 3)
+
+f(1, 2, 3, *(4, 5))
+f(1, 2, 3, *[4, 5])
+f(1, 2, 3, *UserList([4, 5])
+f(1, 2, 3, **{'a':4, 'b':5})
+f(1, 2, 3, *(4, 5), **{'a':6, 'b':7})
+f(1, 2, 3, x=4, y=5, *(6, 7), **{'a':8, 'b':9})
+
+try:
+ g()
+except TypeError, err:
+ print "TypeError:", err
+else:
+ print "should raise TypeError: not enough arguments; expected 1, got 0"
+
+try:
+ g(*())
+except TypeError, err:
+ print "TypeError:", err
+else:
+ print "should raise TypeError: not enough arguments; expected 1, got 0"
+
+try:
+ g(*(), **{})
+except TypeError, err:
+ print "TypeError:", err
+else:
+ print "should raise TypeError: not enough arguments; expected 1, got 0"
+
+g(1)
+g(1, 2)
+g(1, 2, 3)
+g(1, 2, 3, *(4, 5))
+try:
+ g(1, 2, 3, **{'x':4, 'y':5})
+except TypeError, err:
+ print err
+else:
+ print "should raise TypeError: keyword parameter redefined"
+
+try:
+ g(1, 2, 3, a=4, b=5, *(6, 7), **{'a':8, 'b':9})
+except TypeError, err:
+ print err
+else:
+ print "should raise TypeError: keyword parameter redefined"
+
+try:
+ f(**{1:2})
+except TypeError, err:
+ print err
+else:
+ print "should raise TypeError: keywords must be strings"
+
+try:
+ h(**{'e': 2})
+except TypeError, err:
+ print err
+else:
+ print "should raise TypeError: unexpected keyword argument: e"
+
+try:
+ h(*h)
+except TypeError, err:
+ print err
+else:
+ print "should raise TypeError: * argument must be a tuple"
+
+try:
+ h(**h)
+except TypeError, err:
+ print err
+else:
+ print "should raise TypeError: ** argument must be a dictionary"
+
+def f2(*a, **b):
+ return a, b
+
+d = {}
+for i in range(512):
+ key = 'k%d' % i
+ d[key] = i
+a, b = f2(1, *(2, 3), **d)
+print len(a), len(b), b == d