mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	A test of the struct module
This commit is contained in:
		
							parent
							
								
									30695fa3cd
								
							
						
					
					
						commit
						07a0eeceaa
					
				
					 2 changed files with 45 additions and 0 deletions
				
			
		
							
								
								
									
										44
									
								
								Lib/test/test_struct.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								Lib/test/test_struct.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,44 @@ | |||
| import struct | ||||
| ## import pdb | ||||
| 
 | ||||
| def simple_err(func, *args): | ||||
|     try: | ||||
| 	apply(func, args) | ||||
|     except struct.error: | ||||
| 	pass | ||||
|     else: | ||||
| 	print 'expected struct.error not caught' | ||||
| ## 	pdb.set_trace() | ||||
| 
 | ||||
| simple_err(struct.calcsize, 'Q') | ||||
| 
 | ||||
| sz = struct.calcsize('i') | ||||
| if sz * 3 <> struct.calcsize('iii'): | ||||
|     print 'inconsistent sizes' | ||||
| 
 | ||||
| sz = struct.calcsize('cbhilfd') | ||||
| if sz * 3 <> struct.calcsize('3c3b3h3i3l3f3d'): | ||||
|     print 'inconsistent sizes' | ||||
| 
 | ||||
| simple_err(struct.pack, 'iii', 3) | ||||
| simple_err(struct.pack, 'i', 3, 3, 3) | ||||
| simple_err(struct.pack, 'i', 'foo') | ||||
| simple_err(struct.unpack, 'd', 'flap') | ||||
| s = struct.pack('ii', 1, 2) | ||||
| simple_err(struct.unpack, 'iii', s) | ||||
| simple_err(struct.unpack, 'i', s) | ||||
| 
 | ||||
| c = 'a' | ||||
| b = -1 | ||||
| h = 255 | ||||
| i = 65535 | ||||
| l = 65536 | ||||
| f = 3.1415 | ||||
| d = 3.1415 | ||||
| 
 | ||||
| s = struct.pack('xcbhilfd', c, b, h, i, l, f, d) | ||||
| cp, bp, hp, ip, lp, fp, dp = struct.unpack('xcbhilfd', s) | ||||
| if cp <> c or bp <> b or hp <> h or ip <> i or lp <> l or \ | ||||
|    int(100 * fp) <> int(100 * f) or int(100 * dp) <> int(100 * d): | ||||
|    # ^^^ calculate only to two decimal places | ||||
|     print 'unpack/pack not transitive' | ||||
|  | @ -21,6 +21,7 @@ | |||
| 	 'test_rgbimg', | ||||
| 	 'test_select', | ||||
| 	 'test_strftime', | ||||
| 	 'test_struct', | ||||
| 	 ] | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Barry Warsaw
						Barry Warsaw