mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-26 18:06:18 +03:00
82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
from helper import unittest, PillowTestCase
|
|
from io import BytesIO
|
|
from PIL import Image
|
|
|
|
|
|
test_files = ["Tests/images/sugarshack.mpo", "Tests/images/frozenpond.mpo"]
|
|
|
|
|
|
class TestFileMpo(PillowTestCase):
|
|
|
|
def setUp(self):
|
|
codecs = dir(Image.core)
|
|
if "jpeg_encoder" not in codecs or "jpeg_decoder" not in codecs:
|
|
self.skipTest("jpeg support not available")
|
|
|
|
def roundtrip(self, im, **options):
|
|
out = BytesIO()
|
|
im.save(out, "MPO", **options)
|
|
bytes = out.tell()
|
|
out.seek(0)
|
|
im = Image.open(out)
|
|
im.bytes = bytes # for testing only
|
|
return im
|
|
|
|
def test_sanity(self):
|
|
for test_file in test_files:
|
|
im = Image.open(test_file)
|
|
im.load()
|
|
self.assertEqual(im.mode, "RGB")
|
|
self.assertEqual(im.size, (640, 480))
|
|
self.assertEqual(im.format, "MPO")
|
|
|
|
def test_app(self):
|
|
for test_file in test_files:
|
|
# Test APP/COM reader (@PIL135)
|
|
im = Image.open(test_file)
|
|
self.assertEqual(im.applist[0][0], 'APP1')
|
|
self.assertEqual(im.applist[1][0], 'APP2')
|
|
self.assertEqual(im.applist[1][1][:16],
|
|
b'MPF\x00MM\x00*\x00\x00\x00\x08\x00\x03\xb0\x00')
|
|
self.assertEqual(len(im.applist), 2)
|
|
|
|
def test_exif(self):
|
|
for test_file in test_files:
|
|
im = Image.open(test_file)
|
|
info = im._getexif()
|
|
self.assertEqual(info[272], 'Nintendo 3DS')
|
|
self.assertEqual(info[296], 2)
|
|
self.assertEqual(info[34665], 188)
|
|
|
|
def test_mp(self):
|
|
for test_file in test_files:
|
|
im = Image.open(test_file)
|
|
info = im._getmp()
|
|
self.assertEqual(info[45056], '0100')
|
|
self.assertEqual(info[45057], 2)
|
|
|
|
def test_seek(self):
|
|
for test_file in test_files:
|
|
im = Image.open(test_file)
|
|
self.assertEqual(im.tell(), 0)
|
|
# prior to first image raises an error, both blatant and borderline
|
|
self.assertRaises(EOFError, im.seek, -1)
|
|
self.assertRaises(EOFError, im.seek, -523)
|
|
# after the final image raises an error, both blatant and borderline
|
|
self.assertRaises(EOFError, im.seek, 2)
|
|
self.assertRaises(EOFError, im.seek, 523)
|
|
# bad calls shouldn't change the frame
|
|
self.assertEqual(im.tell(), 0)
|
|
# this one will work
|
|
im.seek(1)
|
|
self.assertEqual(im.tell(), 1)
|
|
# and this one, too
|
|
im.seek(0)
|
|
self.assertEqual(im.tell(), 0)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|
|
|
|
# End of file
|