mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-10-31 16:07:30 +03:00 
			
		
		
		
	Fixed binary conversion bug, and added corresponding tests
This commit is contained in:
		
							parent
							
								
									aeb1e61aa7
								
							
						
					
					
						commit
						f644adbb05
					
				|  | @ -36,7 +36,7 @@ def i16le(c, o=0): | |||
|     c: string containing bytes to convert | ||||
|     o: offset of bytes to convert in string | ||||
|     """ | ||||
|     return unpack("<H", c[o:o+2]) | ||||
|     return unpack("<H", c[o:o+2])[0] | ||||
| 
 | ||||
| 
 | ||||
| def i32le(c, o=0): | ||||
|  | @ -46,15 +46,15 @@ def i32le(c, o=0): | |||
|     c: string containing bytes to convert | ||||
|     o: offset of bytes to convert in string | ||||
|     """ | ||||
|     return unpack("<I", c[o:o+4]) | ||||
|     return unpack("<I", c[o:o+4])[0] | ||||
| 
 | ||||
| 
 | ||||
| def i16be(c, o=0): | ||||
|     return unpack(">H", c[o:o+2]) | ||||
|     return unpack(">H", c[o:o+2])[0] | ||||
| 
 | ||||
| 
 | ||||
| def i32be(c, o=0): | ||||
|     return unpack(">I", c[o:o+4]) | ||||
|     return unpack(">I", c[o:o+4])[0] | ||||
| 
 | ||||
| 
 | ||||
| # Output, le = little endian, be = big endian | ||||
|  |  | |||
							
								
								
									
										28
									
								
								Tests/test_binary.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Tests/test_binary.py
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| from helper import unittest, PillowTestCase | ||||
| 
 | ||||
| from PIL import _binary | ||||
| 
 | ||||
| class TestBinary(PillowTestCase): | ||||
| 
 | ||||
|     def test_standard(self): | ||||
|         self.assertEqual(_binary.i8(b'*'), 42) | ||||
|         self.assertEqual(_binary.o8(42), b'*') | ||||
| 
 | ||||
|     def test_little_endian(self): | ||||
|         self.assertEqual(_binary.i16le(b'\xff\xff\x00\x00'), 65535) | ||||
|         self.assertEqual(_binary.i32le(b'\xff\xff\x00\x00'), 65535) | ||||
|          | ||||
|         self.assertEqual(_binary.o16le(65535), b'\xff\xff') | ||||
|         self.assertEqual(_binary.o32le(65535), b'\xff\xff\x00\x00') | ||||
| 
 | ||||
|     def test_big_endian(self): | ||||
|         self.assertEqual(_binary.i16be(b'\x00\x00\xff\xff'), 0) | ||||
|         self.assertEqual(_binary.i32be(b'\x00\x00\xff\xff'), 65535) | ||||
|          | ||||
|         self.assertEqual(_binary.o16be(65535), b'\xff\xff') | ||||
|         self.assertEqual(_binary.o32be(65535), b'\x00\x00\xff\xff') | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     unittest.main() | ||||
| 
 | ||||
| # End of file | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user