| 
									
										
										
										
											1992-01-27 17:00:37 +00:00
										 |  |  | # Python test set -- part 2, opcodes | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-07-30 23:27:12 +00:00
										 |  |  | from test.test_support import TestFailed | 
					
						
							| 
									
										
										
										
											1992-01-27 17:00:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | print '2. Opcodes' | 
					
						
							|  |  |  | print 'XXX Not yet fully implemented' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | print '2.1 try inside for loop' | 
					
						
							|  |  |  | n = 0 | 
					
						
							|  |  |  | for i in range(10): | 
					
						
							| 
									
										
										
										
											2000-10-23 17:22:08 +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 | 
					
						
							| 
									
										
										
										
											2000-12-12 23:11:42 +00:00
										 |  |  | if n != 90: | 
					
						
							| 
									
										
										
										
											2000-10-23 17:22:08 +00:00
										 |  |  |     raise TestFailed, 'try inside for' | 
					
						
							| 
									
										
										
										
											1995-02-09 10:28:43 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | print '2.2 raise class exceptions' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class AClass: pass | 
					
						
							|  |  |  | class BClass(AClass): pass | 
					
						
							|  |  |  | class CClass: pass | 
					
						
							| 
									
										
										
										
											1997-08-22 21:28:05 +00:00
										 |  |  | class DClass(AClass): | 
					
						
							|  |  |  |     def __init__(self, ignore): | 
					
						
							| 
									
										
										
										
											1998-03-26 19:42:58 +00:00
										 |  |  |         pass | 
					
						
							| 
									
										
										
										
											1995-02-09 10:28:43 +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-01 04:41:05 +00:00
										 |  |  | except BClass, v: | 
					
						
							| 
									
										
										
										
											2001-01-29 06:21:17 +00:00
										 |  |  |     if v != b: raise TestFailed, "v!=b" | 
					
						
							|  |  |  | else: raise TestFailed, "no exception" | 
					
						
							| 
									
										
										
										
											1995-02-09 10:28:43 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | try: raise b | 
					
						
							|  |  |  | except AClass, v: | 
					
						
							| 
									
										
										
										
											2001-01-29 06:21:17 +00:00
										 |  |  |     if v != b: raise TestFailed, "v!=b AClass" | 
					
						
							| 
									
										
										
										
											1995-02-09 10:28:43 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-08-22 21:28:05 +00:00
										 |  |  | # not enough arguments | 
					
						
							| 
									
										
										
										
											1995-02-09 10:28:43 +00:00
										 |  |  | try:  raise BClass, a | 
					
						
							|  |  |  | except TypeError: pass | 
					
						
							| 
									
										
										
										
											1997-08-05 16:52:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-08-22 21:28:05 +00:00
										 |  |  | try:  raise DClass, a | 
					
						
							|  |  |  | except DClass, v: | 
					
						
							|  |  |  |     if not isinstance(v, DClass): | 
					
						
							| 
									
										
										
										
											2001-01-29 06:21:17 +00:00
										 |  |  |         raise TestFailed, "v not DClass" | 
					
						
							| 
									
										
										
										
											1997-08-05 16:52:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | print '2.3 comparing function objects' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda: None') | 
					
						
							|  |  |  | g = eval('lambda: None') | 
					
						
							| 
									
										
										
										
											2001-01-29 06:21:17 +00:00
										 |  |  | if f == g: raise TestFailed, "functions should not be same" | 
					
						
							| 
									
										
										
										
											1997-08-05 16:52:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda a: a') | 
					
						
							|  |  |  | g = eval('lambda a: a') | 
					
						
							| 
									
										
										
										
											2001-01-29 06:21:17 +00:00
										 |  |  | if f == g: raise TestFailed, "functions should not be same" | 
					
						
							| 
									
										
										
										
											1997-08-05 16:52:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | f = eval('lambda a=1: a') | 
					
						
							|  |  |  | g = eval('lambda a=1: a') | 
					
						
							| 
									
										
										
										
											2001-01-29 06:21:17 +00:00
										 |  |  | if f == g: raise TestFailed, "functions should not be same" | 
					
						
							| 
									
										
										
										
											1997-08-05 16:52:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 |