mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +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