mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 01:46:18 +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
|
c: string containing bytes to convert
|
||||||
o: offset of bytes to convert in string
|
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):
|
def i32le(c, o=0):
|
||||||
|
@ -46,15 +46,15 @@ def i32le(c, o=0):
|
||||||
c: string containing bytes to convert
|
c: string containing bytes to convert
|
||||||
o: offset of bytes to convert in string
|
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):
|
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):
|
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
|
# 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