blob: 6ef93d9500c078f7ba14a2475220e7da48a83761 [file] [log] [blame]
Guido van Rossum3bead091992-01-27 17:00:37 +00001# Python test set -- part 2, opcodes
2
Thomas Wouters89f507f2006-12-13 04:49:30 +00003import unittest
4
5class OpcodeTest(unittest.TestCase):
6
7 def test_try_inside_for_loop(self):
8 n = 0
9 for i in range(10):
10 n = n+i
11 try: 1/0
12 except NameError: pass
13 except ZeroDivisionError: pass
14 except TypeError: pass
15 try: pass
16 except: pass
17 try: pass
18 finally: pass
19 n = n+i
20 if n != 90:
21 self.fail('try inside for')
22
23 def test_raise_class_exceptions(self):
24
25 class AClass(Exception): pass
26 class BClass(AClass): pass
27 class CClass(Exception): pass
28 class DClass(AClass):
29 def __init__(self, ignore):
30 pass
31
32 try: raise AClass()
33 except: pass
34
35 try: raise AClass()
36 except AClass: pass
37
38 try: raise BClass()
39 except AClass: pass
40
41 try: raise BClass()
42 except CClass: self.fail()
43 except: pass
44
45 a = AClass()
46 b = BClass()
47
Collin Winter828f04a2007-08-31 00:04:24 +000048 try:
49 raise b
Guido van Rossumb940e112007-01-10 16:19:56 +000050 except AClass as v:
Collin Winter828f04a2007-08-31 00:04:24 +000051 self.assertEqual(v, b)
Thomas Wouters89f507f2006-12-13 04:49:30 +000052 else:
53 self.fail("no exception")
54
55 # not enough arguments
56 ##try: raise BClass, a
57 ##except TypeError: pass
58 ##else: self.fail("no exception")
59
Collin Winter828f04a2007-08-31 00:04:24 +000060 try: raise DClass(a)
Guido van Rossumb940e112007-01-10 16:19:56 +000061 except DClass as v:
Ezio Melottie9615932010-01-24 19:26:24 +000062 self.assertIsInstance(v, DClass)
Thomas Wouters89f507f2006-12-13 04:49:30 +000063 else:
64 self.fail("no exception")
65
66 def test_compare_function_objects(self):
67
68 f = eval('lambda: None')
69 g = eval('lambda: None')
Ezio Melottib3aedd42010-11-20 19:04:17 +000070 self.assertNotEqual(f, g)
Thomas Wouters89f507f2006-12-13 04:49:30 +000071
72 f = eval('lambda a: a')
73 g = eval('lambda a: a')
Ezio Melottib3aedd42010-11-20 19:04:17 +000074 self.assertNotEqual(f, g)
Thomas Wouters89f507f2006-12-13 04:49:30 +000075
76 f = eval('lambda a=1: a')
77 g = eval('lambda a=1: a')
Ezio Melottib3aedd42010-11-20 19:04:17 +000078 self.assertNotEqual(f, g)
Thomas Wouters89f507f2006-12-13 04:49:30 +000079
80 f = eval('lambda: 0')
81 g = eval('lambda: 1')
Ezio Melottib3aedd42010-11-20 19:04:17 +000082 self.assertNotEqual(f, g)
Thomas Wouters89f507f2006-12-13 04:49:30 +000083
84 f = eval('lambda: None')
85 g = eval('lambda a: None')
Ezio Melottib3aedd42010-11-20 19:04:17 +000086 self.assertNotEqual(f, g)
Thomas Wouters89f507f2006-12-13 04:49:30 +000087
88 f = eval('lambda a: None')
89 g = eval('lambda b: None')
Ezio Melottib3aedd42010-11-20 19:04:17 +000090 self.assertNotEqual(f, g)
Thomas Wouters89f507f2006-12-13 04:49:30 +000091
92 f = eval('lambda a: None')
93 g = eval('lambda a=None: None')
Ezio Melottib3aedd42010-11-20 19:04:17 +000094 self.assertNotEqual(f, g)
Thomas Wouters89f507f2006-12-13 04:49:30 +000095
96 f = eval('lambda a=0: None')
97 g = eval('lambda a=1: None')
Ezio Melottib3aedd42010-11-20 19:04:17 +000098 self.assertNotEqual(f, g)
Guido van Rossum3bead091992-01-27 17:00:37 +000099
Benjamin Petersonefb06b02009-02-26 18:55:48 +0000100 def test_modulo_of_string_subclasses(self):
101 class MyString(str):
102 def __mod__(self, value):
103 return 42
104 self.assertEqual(MyString() % 3, 42)
105
Guido van Rossum3bead091992-01-27 17:00:37 +0000106
Thomas Wouters89f507f2006-12-13 04:49:30 +0000107if __name__ == '__main__':
Zachary Ware38c707e2015-04-13 15:00:43 -0500108 unittest.main()