blob: 9f20ba1377d798e8ed9e8e515b1924a4833fa0a4 [file] [log] [blame]
Fredrik Lundhf7850422001-01-17 21:51:36 +00001from test_support import verbose, TestFailed
Peter Schneider-Kampfdee0f02000-07-25 22:15:45 +00002
3if verbose:
Jeremy Hylton047e2c92001-01-19 03:25:56 +00004 print 'Running tests on argument handling'
Peter Schneider-Kampfdee0f02000-07-25 22:15:45 +00005
6try:
Jeremy Hylton121b6eb2001-02-19 23:53:42 +00007 exec 'def f(a, a): pass'
Peter Schneider-Kampfdee0f02000-07-25 22:15:45 +00008 raise TestFailed, "duplicate arguments"
9except SyntaxError:
10 pass
11
12try:
Jeremy Hylton121b6eb2001-02-19 23:53:42 +000013 exec 'def f(a = 0, a = 1): pass'
Peter Schneider-Kampfdee0f02000-07-25 22:15:45 +000014 raise TestFailed, "duplicate keyword arguments"
15except SyntaxError:
16 pass
Jeremy Hylton047e2c92001-01-19 03:25:56 +000017
18try:
Jeremy Hylton121b6eb2001-02-19 23:53:42 +000019 exec 'def f(a): global a; a = 1'
Jeremy Hylton047e2c92001-01-19 03:25:56 +000020 raise TestFailed, "variable is global and local"
21except SyntaxError:
22 pass
Jeremy Hylton121b6eb2001-02-19 23:53:42 +000023
24print "testing complex args"
25
26def comp_args((a, b)):
Tim Peters0009c4e2001-02-21 07:29:48 +000027 print a,b
Jeremy Hylton121b6eb2001-02-19 23:53:42 +000028
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
Tim Peters9aa70d92001-08-27 19:19:28 +000053
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")
Tim Petersd507dab2001-08-30 20:51:59 +000068
69
70if verbose:
71 print "testing literals with leading zeroes"
72
73def expect_same(test_source, expected):
74 got = eval(test_source)
75 if got != expected:
76 raise TestFailed("eval(%r) gave %r, but expected %r" %
77 (test_source, got, expected))
78
79expect_error("077787")
80expect_error("0xj")
81expect_error("0x.")
82expect_error("0e")
83expect_same("0777", 511)
84expect_same("0777L", 511)
85expect_same("000777", 511)
86expect_same("0xff", 255)
87expect_same("0xffL", 255)
88expect_same("0XfF", 255)
89expect_same("0777.", 777)
90expect_same("0777.0", 777)
91expect_same("000000000000000000000000000000000000000000000000000777e0", 777)
92expect_same("0777e1", 7770)
93expect_same("0e0", 0)
94expect_same("0000E-012", 0)
95expect_same("09.5", 9.5)
96expect_same("0777j", 777j)
97expect_same("00j", 0j)
98expect_same("00.0", 0)
99expect_same("0e3", 0)
100expect_same("090000000000000.", 90000000000000.)
101expect_same("090000000000000.0000000000000000000000", 90000000000000.)
102expect_same("090000000000000e0", 90000000000000.)
103expect_same("090000000000000e-0", 90000000000000.)
104expect_same("090000000000000j", 90000000000000j)
105expect_error("090000000000000") # plain octal literal w/ decimal digit
106expect_error("080000000000000") # plain octal literal w/ decimal digit
107expect_error("000000000000009") # plain octal literal w/ decimal digit
108expect_error("000000000000008") # plain octal literal w/ decimal digit
109expect_same("000000000000007", 7)
110expect_same("000000000000008.", 8.)
111expect_same("000000000000009.", 9.)