test_compile.py revision 9aa70d93aae89a9404a58f32f3fcd3c72b1ee56b
1from test_support import verbose, TestFailed
2
3if verbose:
4    print 'Running tests on argument handling'
5
6try:
7    exec 'def f(a, a): pass'
8    raise TestFailed, "duplicate arguments"
9except SyntaxError:
10    pass
11
12try:
13    exec 'def f(a = 0, a = 1): pass'
14    raise TestFailed, "duplicate keyword arguments"
15except SyntaxError:
16    pass
17
18try:
19    exec 'def f(a): global a; a = 1'
20    raise TestFailed, "variable is global and local"
21except SyntaxError:
22    pass
23
24print "testing complex args"
25
26def comp_args((a, b)):
27    print a,b
28
29comp_args((1, 2))
30
31def comp_args((a, b)=(3, 4)):
32    print a, b
33
34comp_args((1, 2))
35comp_args()
36
37def comp_args(a, (b, c)):
38    print a, b, c
39
40comp_args(1, (2, 3))
41
42def comp_args(a=2, (b, c)=(3, 4)):
43    print a, b, c
44
45comp_args(1, (2, 3))
46comp_args()
47
48try:
49    exec 'def f(a=1, (b, c)): pass'
50    raise TestFailed, "non-default args after default"
51except SyntaxError:
52    pass
53
54if verbose:
55    print "testing bad float literals"
56
57def expect_error(s):
58    try:
59        eval(s)
60        raise TestFailed("%r accepted" % s)
61    except SyntaxError:
62        pass
63
64expect_error("2e")
65expect_error("2.0e+")
66expect_error("1e-")
67expect_error("3-4e/21")
68