| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | # Python test set -- part 2, opcodes | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from test_support import * | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | print '2. Opcodes' | 
					
						
							|  |  |  | print 'XXX Not yet fully implemented' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | print '2.1 try inside for loop' | 
					
						
							|  |  |  | n = 0 | 
					
						
							|  |  |  | for i in range(10): | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         n = n+i | 
					
						
							|  |  |  |         try: 1/0 | 
					
						
							|  |  |  |         except NameError: pass | 
					
						
							|  |  |  |         except ZeroDivisionError: pass | 
					
						
							|  |  |  |         except TypeError: pass | 
					
						
							|  |  |  |         try: pass | 
					
						
							|  |  |  |         except: pass | 
					
						
							|  |  |  |         try: pass | 
					
						
							|  |  |  |         finally: pass | 
					
						
							|  |  |  |         n = n+i | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | if n <> 90: | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         raise TestFailed, 'try inside for' | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | print '2.2 raise class exceptions' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AClass: pass | 
					
						
							|  |  |  | class BClass(AClass): pass | 
					
						
							|  |  |  | class CClass: pass | 
					
						
							| 
									
										
										
										
											1997-10-06 20:19:59 +00:00
										 |  |  | class DClass(AClass): | 
					
						
							|  |  |  |     def __init__(self, ignore): | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         pass | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | try: raise AClass() | 
					
						
							|  |  |  | except: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: raise AClass() | 
					
						
							|  |  |  | except AClass: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: raise BClass() | 
					
						
							|  |  |  | except AClass: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: raise BClass() | 
					
						
							|  |  |  | except CClass: raise TestFailed | 
					
						
							|  |  |  | except: pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a = AClass() | 
					
						
							|  |  |  | b = BClass() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try: raise AClass, b | 
					
						
							| 
									
										
										
										
											1997-10-06 20:19:59 +00:00
										 |  |  | except BClass, v: | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         if v != b: raise TestFailed | 
					
						
							| 
									
										
										
										
											1997-10-06 20:19:59 +00:00
										 |  |  | else: raise TestFailed | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | try: raise b | 
					
						
							|  |  |  | except AClass, v: | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         if v != b: raise TestFailed | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-10-06 20:19:59 +00:00
										 |  |  | # not enough arguments | 
					
						
							| 
									
										
										
										
											1996-07-22 15:23:25 +00:00
										 |  |  | try:  raise BClass, a | 
					
						
							|  |  |  | except TypeError: pass | 
					
						
							| 
									
										
										
										
											1997-08-15 00:45:26 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-10-06 20:19:59 +00:00
										 |  |  | try:  raise DClass, a | 
					
						
							|  |  |  | except DClass, v: | 
					
						
							|  |  |  |     if not isinstance(v, DClass): | 
					
						
							| 
									
										
										
										
											1998-03-26 22:14:20 +00:00
										 |  |  |         raise TestFailed | 
					
						
							| 
									
										
										
										
											1997-08-15 00:45:26 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | print '2.3 comparing function objects' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda: None') | 
					
						
							|  |  |  | g = eval('lambda: None') | 
					
						
							|  |  |  | if f != g: raise TestFailed | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda a: a') | 
					
						
							|  |  |  | g = eval('lambda a: a') | 
					
						
							|  |  |  | if f != g: raise TestFailed | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda a=1: a') | 
					
						
							|  |  |  | g = eval('lambda a=1: a') | 
					
						
							|  |  |  | if f != g: raise TestFailed | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda: 0') | 
					
						
							|  |  |  | g = eval('lambda: 1') | 
					
						
							|  |  |  | if f == g: raise TestFailed | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda: None') | 
					
						
							|  |  |  | g = eval('lambda a: None') | 
					
						
							|  |  |  | if f == g: raise TestFailed | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda a: None') | 
					
						
							|  |  |  | g = eval('lambda b: None') | 
					
						
							|  |  |  | if f == g: raise TestFailed | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda a: None') | 
					
						
							|  |  |  | g = eval('lambda a=None: None') | 
					
						
							|  |  |  | if f == g: raise TestFailed | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda a=0: None') | 
					
						
							|  |  |  | g = eval('lambda a=1: None') | 
					
						
							|  |  |  | if f == g: raise TestFailed |