Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | # Python test set -- part 2, opcodes |
2 | ||
3 | from test.test_support import TestFailed | |
4 | ||
5 | ||
6 | print '2. Opcodes' | |
7 | print 'XXX Not yet fully implemented' | |
8 | ||
9 | print '2.1 try inside for loop' | |
10 | n = 0 | |
11 | for i in range(10): | |
12 | n = n+i | |
13 | try: 1/0 | |
14 | except NameError: pass | |
15 | except ZeroDivisionError: pass | |
16 | except TypeError: pass | |
17 | try: pass | |
18 | except: pass | |
19 | try: pass | |
20 | finally: pass | |
21 | n = n+i | |
22 | if n != 90: | |
23 | raise TestFailed, 'try inside for' | |
24 | ||
25 | ||
26 | print '2.2 raise class exceptions' | |
27 | ||
28 | class AClass: pass | |
29 | class BClass(AClass): pass | |
30 | class CClass: pass | |
31 | class DClass(AClass): | |
32 | def __init__(self, ignore): | |
33 | pass | |
34 | ||
35 | try: raise AClass() | |
36 | except: pass | |
37 | ||
38 | try: raise AClass() | |
39 | except AClass: pass | |
40 | ||
41 | try: raise BClass() | |
42 | except AClass: pass | |
43 | ||
44 | try: raise BClass() | |
45 | except CClass: raise TestFailed | |
46 | except: pass | |
47 | ||
48 | a = AClass() | |
49 | b = BClass() | |
50 | ||
51 | try: raise AClass, b | |
52 | except BClass, v: | |
53 | if v != b: raise TestFailed, "v!=b" | |
54 | else: raise TestFailed, "no exception" | |
55 | ||
56 | try: raise b | |
57 | except AClass, v: | |
58 | if v != b: raise TestFailed, "v!=b AClass" | |
59 | ||
60 | # not enough arguments | |
61 | try: raise BClass, a | |
62 | except TypeError: pass | |
63 | ||
64 | try: raise DClass, a | |
65 | except DClass, v: | |
66 | if not isinstance(v, DClass): | |
67 | raise TestFailed, "v not DClass" | |
68 | ||
69 | print '2.3 comparing function objects' | |
70 | ||
71 | f = eval('lambda: None') | |
72 | g = eval('lambda: None') | |
73 | if f == g: raise TestFailed, "functions should not be same" | |
74 | ||
75 | f = eval('lambda a: a') | |
76 | g = eval('lambda a: a') | |
77 | if f == g: raise TestFailed, "functions should not be same" | |
78 | ||
79 | f = eval('lambda a=1: a') | |
80 | g = eval('lambda a=1: a') | |
81 | if f == g: raise TestFailed, "functions should not be same" | |
82 | ||
83 | f = eval('lambda: 0') | |
84 | g = eval('lambda: 1') | |
85 | if f == g: raise TestFailed | |
86 | ||
87 | f = eval('lambda: None') | |
88 | g = eval('lambda a: None') | |
89 | if f == g: raise TestFailed | |
90 | ||
91 | f = eval('lambda a: None') | |
92 | g = eval('lambda b: None') | |
93 | if f == g: raise TestFailed | |
94 | ||
95 | f = eval('lambda a: None') | |
96 | g = eval('lambda a=None: None') | |
97 | if f == g: raise TestFailed | |
98 | ||
99 | f = eval('lambda a=0: None') | |
100 | g = eval('lambda a=1: None') | |
101 | if f == g: raise TestFailed |