mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +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_rgbimg', | ||||||
| 	 'test_select', | 	 'test_select', | ||||||
| 	 'test_strftime', | 	 'test_strftime', | ||||||
|  | 	 'test_struct', | ||||||
| 	 ] | 	 ] | ||||||
| 
 | 
 | ||||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Barry Warsaw
						Barry Warsaw