Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / lib / python2.4 / test / test_codeop.py
CommitLineData
920dae64
AT
1"""
2 Test cases for codeop.py
3 Nick Mathewson
4"""
5import unittest
6from test.test_support import run_unittest, is_jython
7
8from codeop import compile_command, PyCF_DONT_IMPLY_DEDENT
9
10if is_jython:
11 import sys
12 import cStringIO
13
14 def unify_callables(d):
15 for n,v in d.items():
16 if callable(v):
17 d[n] = callable
18 return d
19
20class CodeopTests(unittest.TestCase):
21
22 def assertValid(self, str, symbol='single'):
23 '''succeed iff str is a valid piece of code'''
24 if is_jython:
25 code = compile_command(str, "<input>", symbol)
26 self.assert_(code)
27 if symbol == "single":
28 d,r = {},{}
29 saved_stdout = sys.stdout
30 sys.stdout = cStringIO.StringIO()
31 try:
32 exec code in d
33 exec compile(str,"<input>","single") in r
34 finally:
35 sys.stdout = saved_stdout
36 elif symbol == 'eval':
37 ctx = {'a': 2}
38 d = { 'value': eval(code,ctx) }
39 r = { 'value': eval(str,ctx) }
40 self.assertEquals(unify_callables(r),unify_callables(d))
41 else:
42 expected = compile(str, "<input>", symbol, PyCF_DONT_IMPLY_DEDENT)
43 self.assertEquals( compile_command(str, "<input>", symbol), expected)
44
45 def assertIncomplete(self, str, symbol='single'):
46 '''succeed iff str is the start of a valid piece of code'''
47 self.assertEquals( compile_command(str, symbol=symbol), None)
48
49 def assertInvalid(self, str, symbol='single', is_syntax=1):
50 '''succeed iff str is the start of an invalid piece of code'''
51 try:
52 compile_command(str,symbol=symbol)
53 self.fail("No exception thrown for invalid code")
54 except SyntaxError:
55 self.assert_(is_syntax)
56 except OverflowError:
57 self.assert_(not is_syntax)
58
59 def test_valid(self):
60 av = self.assertValid
61
62 # special case
63 if not is_jython:
64 self.assertEquals(compile_command(""),
65 compile("pass", "<input>", 'single',
66 PyCF_DONT_IMPLY_DEDENT))
67 self.assertEquals(compile_command("\n"),
68 compile("pass", "<input>", 'single',
69 PyCF_DONT_IMPLY_DEDENT))
70 else:
71 av("")
72 av("\n")
73
74 av("a = 1")
75 av("\na = 1")
76 av("a = 1\n")
77 av("a = 1\n\n")
78 av("\n\na = 1\n\n")
79
80 av("def x():\n pass\n")
81 av("if 1:\n pass\n")
82
83 av("\n\nif 1: pass\n")
84 av("\n\nif 1: pass\n\n")
85
86 av("def x():\n\n pass\n")
87 av("def x():\n pass\n \n")
88 av("def x():\n pass\n \n")
89
90 av("pass\n")
91 av("3**3\n")
92
93 av("if 9==3:\n pass\nelse:\n pass\n")
94 av("if 1:\n pass\n if 1:\n pass\n else:\n pass\n")
95
96 av("#a\n#b\na = 3\n")
97 av("#a\n\n \na=3\n")
98 av("a=3\n\n")
99 av("a = 9+ \\\n3")
100
101 av("3**3","eval")
102 av("(lambda z: \n z**3)","eval")
103
104 av("9+ \\\n3","eval")
105 av("9+ \\\n3\n","eval")
106
107 av("\n\na**3","eval")
108 av("\n \na**3","eval")
109 av("#a\n#b\na**3","eval")
110
111 def test_incomplete(self):
112 ai = self.assertIncomplete
113
114 ai("(a **")
115 ai("(a,b,")
116 ai("(a,b,(")
117 ai("(a,b,(")
118 ai("a = (")
119 ai("a = {")
120 ai("b + {")
121
122 ai("if 9==3:\n pass\nelse:")
123 ai("if 9==3:\n pass\nelse:\n")
124 ai("if 9==3:\n pass\nelse:\n pass")
125 ai("if 1:")
126 ai("if 1:\n")
127 ai("if 1:\n pass\n if 1:\n pass\n else:")
128 ai("if 1:\n pass\n if 1:\n pass\n else:\n")
129 ai("if 1:\n pass\n if 1:\n pass\n else:\n pass")
130
131 ai("def x():")
132 ai("def x():\n")
133 ai("def x():\n\n")
134
135 ai("def x():\n pass")
136 ai("def x():\n pass\n ")
137 ai("def x():\n pass\n ")
138 ai("\n\ndef x():\n pass")
139
140 ai("a = 9+ \\")
141 ai("a = 'a\\")
142 ai("a = '''xy")
143
144 ai("","eval")
145 ai("\n","eval")
146 ai("(","eval")
147 ai("(\n\n\n","eval")
148 ai("(9+","eval")
149 ai("9+ \\","eval")
150 ai("lambda z: \\","eval")
151
152 def test_invalid(self):
153 ai = self.assertInvalid
154 ai("a b")
155
156 ai("a @")
157 ai("a b @")
158 ai("a ** @")
159
160 ai("a = ")
161 ai("a = 9 +")
162
163 ai("def x():\n\npass\n")
164
165 ai("\n\n if 1: pass\n\npass")
166
167 ai("a = 9+ \\\n")
168 ai("a = 'a\\ ")
169 ai("a = 'a\\\n")
170
171 ai("a = 1","eval")
172 ai("a = (","eval")
173 ai("]","eval")
174 ai("())","eval")
175 ai("[}","eval")
176 ai("9+","eval")
177 ai("lambda z:","eval")
178 ai("a b","eval")
179
180 def test_filename(self):
181 self.assertEquals(compile_command("a = 1\n", "abc").co_filename,
182 compile("a = 1\n", "abc", 'single').co_filename)
183 self.assertNotEquals(compile_command("a = 1\n", "abc").co_filename,
184 compile("a = 1\n", "def", 'single').co_filename)
185
186
187def test_main():
188 run_unittest(CodeopTests)
189
190
191if __name__ == "__main__":
192 test_main()