blob: e976a30dd5ff88af209a05ac9ddfb21381f44658 [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 Hylton778e2652001-11-09 19:50:08 +00004 print "Testing whether compiler catches assignment to __debug__"
5
6try:
7 compile('__debug__ = 1', '?', 'single')
8except SyntaxError:
9 pass
10
11import __builtin__
12setattr(__builtin__, '__debug__', 'sure')
13
14if verbose:
Jeremy Hylton047e2c92001-01-19 03:25:56 +000015 print 'Running tests on argument handling'
Peter Schneider-Kampfdee0f02000-07-25 22:15:45 +000016
17try:
Jeremy Hylton121b6eb2001-02-19 23:53:42 +000018 exec 'def f(a, a): pass'
Peter Schneider-Kampfdee0f02000-07-25 22:15:45 +000019 raise TestFailed, "duplicate arguments"
20except SyntaxError:
21 pass
22
23try:
Jeremy Hylton121b6eb2001-02-19 23:53:42 +000024 exec 'def f(a = 0, a = 1): pass'
Peter Schneider-Kampfdee0f02000-07-25 22:15:45 +000025 raise TestFailed, "duplicate keyword arguments"
26except SyntaxError:
27 pass
Jeremy Hylton047e2c92001-01-19 03:25:56 +000028
29try:
Jeremy Hylton121b6eb2001-02-19 23:53:42 +000030 exec 'def f(a): global a; a = 1'
Jeremy Hylton047e2c92001-01-19 03:25:56 +000031 raise TestFailed, "variable is global and local"
32except SyntaxError:
33 pass
Jeremy Hylton121b6eb2001-02-19 23:53:42 +000034
Jeremy Hylton778e2652001-11-09 19:50:08 +000035if verbose:
36 print "testing complex args"
Jeremy Hylton121b6eb2001-02-19 23:53:42 +000037
38def comp_args((a, b)):
Tim Peters0009c4e2001-02-21 07:29:48 +000039 print a,b
Jeremy Hylton121b6eb2001-02-19 23:53:42 +000040
41comp_args((1, 2))
42
43def comp_args((a, b)=(3, 4)):
44 print a, b
45
46comp_args((1, 2))
47comp_args()
48
49def comp_args(a, (b, c)):
50 print a, b, c
51
52comp_args(1, (2, 3))
53
54def comp_args(a=2, (b, c)=(3, 4)):
55 print a, b, c
56
57comp_args(1, (2, 3))
58comp_args()
59
60try:
61 exec 'def f(a=1, (b, c)): pass'
62 raise TestFailed, "non-default args after default"
63except SyntaxError:
64 pass
Tim Peters9aa70d92001-08-27 19:19:28 +000065
66if verbose:
67 print "testing bad float literals"
68
69def expect_error(s):
70 try:
71 eval(s)
72 raise TestFailed("%r accepted" % s)
73 except SyntaxError:
74 pass
75
76expect_error("2e")
77expect_error("2.0e+")
78expect_error("1e-")
79expect_error("3-4e/21")
Tim Petersd507dab2001-08-30 20:51:59 +000080
81
82if verbose:
83 print "testing literals with leading zeroes"
84
85def expect_same(test_source, expected):
86 got = eval(test_source)
87 if got != expected:
88 raise TestFailed("eval(%r) gave %r, but expected %r" %
89 (test_source, got, expected))
90
91expect_error("077787")
92expect_error("0xj")
93expect_error("0x.")
94expect_error("0e")
95expect_same("0777", 511)
96expect_same("0777L", 511)
97expect_same("000777", 511)
98expect_same("0xff", 255)
99expect_same("0xffL", 255)
100expect_same("0XfF", 255)
101expect_same("0777.", 777)
102expect_same("0777.0", 777)
103expect_same("000000000000000000000000000000000000000000000000000777e0", 777)
104expect_same("0777e1", 7770)
105expect_same("0e0", 0)
106expect_same("0000E-012", 0)
107expect_same("09.5", 9.5)
108expect_same("0777j", 777j)
109expect_same("00j", 0j)
110expect_same("00.0", 0)
111expect_same("0e3", 0)
112expect_same("090000000000000.", 90000000000000.)
113expect_same("090000000000000.0000000000000000000000", 90000000000000.)
114expect_same("090000000000000e0", 90000000000000.)
115expect_same("090000000000000e-0", 90000000000000.)
116expect_same("090000000000000j", 90000000000000j)
117expect_error("090000000000000") # plain octal literal w/ decimal digit
118expect_error("080000000000000") # plain octal literal w/ decimal digit
119expect_error("000000000000009") # plain octal literal w/ decimal digit
120expect_error("000000000000008") # plain octal literal w/ decimal digit
121expect_same("000000000000007", 7)
122expect_same("000000000000008.", 8.)
123expect_same("000000000000009.", 9.)