Pillow/Tests/test_file_mic.py
Jon Dufresne 9175706300 Allow the olefile dependency to be optional
Support for plugins requiring olefile will not be loaded if it is not
installed. Allows library consumers to avoid installing this dependency
if they choose. Some library consumers have little interest in the
format support and would like to keep dependencies to a minimum.
2017-10-04 06:54:34 -07:00

70 lines
1.8 KiB
Python

from helper import unittest, PillowTestCase, hopper
from PIL import Image, ImagePalette
try:
from PIL import MicImagePlugin
except ImportError:
olefile_installed = False
else:
olefile_installed = True
TEST_FILE = "Tests/images/hopper.mic"
@unittest.skipUnless(olefile_installed, "olefile package not installed")
class TestFileMic(PillowTestCase):
def test_sanity(self):
im = Image.open(TEST_FILE)
im.load()
self.assertEqual(im.mode, "RGBA")
self.assertEqual(im.size, (128, 128))
self.assertEqual(im.format, "MIC")
# Adjust for the gamma of 2.2 encoded into the file
lut = ImagePalette.make_gamma_lut(1/2.2)
im = Image.merge('RGBA', [chan.point(lut) for chan in im.split()])
im2 = hopper("RGBA")
self.assert_image_similar(im, im2, 10)
def test_n_frames(self):
im = Image.open(TEST_FILE)
self.assertEqual(im.n_frames, 1)
def test_is_animated(self):
im = Image.open(TEST_FILE)
self.assertFalse(im.is_animated)
def test_tell(self):
im = Image.open(TEST_FILE)
self.assertEqual(im.tell(), 0)
def test_seek(self):
im = Image.open(TEST_FILE)
im.seek(0)
self.assertEqual(im.tell(), 0)
self.assertRaises(EOFError, im.seek, 99)
self.assertEqual(im.tell(), 0)
def test_invalid_file(self):
# Test an invalid OLE file
invalid_file = "Tests/images/flower.jpg"
self.assertRaises(SyntaxError,
MicImagePlugin.MicImageFile, invalid_file)
# Test a valid OLE file, but not a MIC file
ole_file = "Tests/images/test-ole-file.doc"
self.assertRaises(SyntaxError,
MicImagePlugin.MicImageFile, ole_file)
if __name__ == '__main__':
unittest.main()