mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	Added tests
This commit is contained in:
		
							parent
							
								
									c10ad19a2b
								
							
						
					
					
						commit
						371933a597
					
				| 
						 | 
					@ -375,29 +375,31 @@ class TestFileGif(PillowTestCase):
 | 
				
			||||||
    def test_version(self):
 | 
					    def test_version(self):
 | 
				
			||||||
        out = self.tempfile('temp.gif')
 | 
					        out = self.tempfile('temp.gif')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Test that GIF87a is used by default
 | 
					        def assertVersionAfterSave(im, version):
 | 
				
			||||||
        im = Image.new('L', (100, 100), '#000')
 | 
					 | 
				
			||||||
            im.save(out)
 | 
					            im.save(out)
 | 
				
			||||||
            reread = Image.open(out)
 | 
					            reread = Image.open(out)
 | 
				
			||||||
        self.assertEqual(reread.info["version"], b"GIF87a")
 | 
					            self.assertEqual(reread.info["version"], version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Test that GIF87a is used by default
 | 
				
			||||||
 | 
					        im = Image.new('L', (100, 100), '#000')
 | 
				
			||||||
 | 
					        assertVersionAfterSave(im, b"GIF87a")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Test setting the version to 89a
 | 
				
			||||||
 | 
					        im = Image.new('L', (100, 100), '#000')
 | 
				
			||||||
 | 
					        im.info["version"] = b"89a"
 | 
				
			||||||
 | 
					        assertVersionAfterSave(im, b"GIF89a")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Test that adding a GIF89a feature changes the version
 | 
					        # Test that adding a GIF89a feature changes the version
 | 
				
			||||||
        im.info["transparency"] = 1
 | 
					        im.info["transparency"] = 1
 | 
				
			||||||
        im.save(out)
 | 
					        assertVersionAfterSave(im, b"GIF89a")
 | 
				
			||||||
        reread = Image.open(out)
 | 
					 | 
				
			||||||
        self.assertEqual(reread.info["version"], b"GIF89a")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Test that a GIF87a image is also saved in that format
 | 
					        # Test that a GIF87a image is also saved in that format
 | 
				
			||||||
        im = Image.open("Tests/images/test.colors.gif")
 | 
					        im = Image.open("Tests/images/test.colors.gif")
 | 
				
			||||||
        im.save(out)
 | 
					        assertVersionAfterSave(im, b"GIF87a")
 | 
				
			||||||
        reread = Image.open(out)
 | 
					 | 
				
			||||||
        self.assertEqual(reread.info["version"], b"GIF87a")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Test that a GIF89a image is also saved in that format
 | 
					        # Test that a GIF89a image is also saved in that format
 | 
				
			||||||
        im.info["version"] = b"GIF89a"
 | 
					        im.info["version"] = b"GIF89a"
 | 
				
			||||||
        im.save(out)
 | 
					        assertVersionAfterSave(im, b"GIF87a")
 | 
				
			||||||
        reread = Image.open(out)
 | 
					 | 
				
			||||||
        self.assertEqual(reread.info["version"], b"GIF87a")
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_append_images(self):
 | 
					    def test_append_images(self):
 | 
				
			||||||
        out = self.tempfile('temp.gif')
 | 
					        out = self.tempfile('temp.gif')
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,8 @@
 | 
				
			||||||
from helper import unittest, PillowTestCase
 | 
					from helper import unittest, PillowTestCase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from PIL import Image
 | 
					from PIL import Image, IcnsImagePlugin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# sample icon file
 | 
					# sample icon file
 | 
				
			||||||
| 
						 | 
					@ -82,6 +83,23 @@ class TestFileIcns(PillowTestCase):
 | 
				
			||||||
            self.assertEqual(im2.mode, 'RGBA')
 | 
					            self.assertEqual(im2.mode, 'RGBA')
 | 
				
			||||||
            self.assertEqual(im2.size, (wr, hr))
 | 
					            self.assertEqual(im2.size, (wr, hr))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_getimage(self):
 | 
				
			||||||
 | 
					        with open(TEST_FILE, 'rb') as fp:
 | 
				
			||||||
 | 
					            icns_file = IcnsImagePlugin.IcnsFile(fp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            im = icns_file.getimage()
 | 
				
			||||||
 | 
					            self.assertEqual(im.mode, "RGBA")
 | 
				
			||||||
 | 
					            self.assertEqual(im.size, (1024, 1024))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            im = icns_file.getimage((512, 512))
 | 
				
			||||||
 | 
					            self.assertEqual(im.mode, "RGBA")
 | 
				
			||||||
 | 
					            self.assertEqual(im.size, (512, 512))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_not_an_icns_file(self):
 | 
				
			||||||
 | 
					        with io.BytesIO(b'invalid\n') as fp:
 | 
				
			||||||
 | 
					            self.assertRaises(SyntaxError,
 | 
				
			||||||
 | 
					                lambda: IcnsImagePlugin.IcnsFile(fp))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    unittest.main()
 | 
					    unittest.main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,19 +43,28 @@ class TestFileIm(PillowTestCase):
 | 
				
			||||||
                self.assertLess(im.tell(), n_frames)
 | 
					                self.assertLess(im.tell(), n_frames)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_roundtrip(self):
 | 
					    def test_roundtrip(self):
 | 
				
			||||||
 | 
					        for mode in ["RGB", "P"]:
 | 
				
			||||||
            out = self.tempfile('temp.im')
 | 
					            out = self.tempfile('temp.im')
 | 
				
			||||||
        im = hopper()
 | 
					            im = hopper(mode)
 | 
				
			||||||
            im.save(out)
 | 
					            im.save(out)
 | 
				
			||||||
            reread = Image.open(out)
 | 
					            reread = Image.open(out)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            self.assert_image_equal(reread, im)
 | 
					            self.assert_image_equal(reread, im)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_save_unsupported_mode(self):
 | 
				
			||||||
 | 
					        out = self.tempfile('temp.im')
 | 
				
			||||||
 | 
					        im = hopper("HSV")
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError, lambda: im.save(out))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_invalid_file(self):
 | 
					    def test_invalid_file(self):
 | 
				
			||||||
        invalid_file = "Tests/images/flower.jpg"
 | 
					        invalid_file = "Tests/images/flower.jpg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assertRaises(SyntaxError,
 | 
					        self.assertRaises(SyntaxError,
 | 
				
			||||||
                          lambda: ImImagePlugin.ImImageFile(invalid_file))
 | 
					                          lambda: ImImagePlugin.ImImageFile(invalid_file))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_number(self):
 | 
				
			||||||
 | 
					        self.assertEqual(1.2, ImImagePlugin.number("1.2"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    unittest.main()
 | 
					    unittest.main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -531,6 +531,12 @@ class TestFilePng(PillowTestCase):
 | 
				
			||||||
        # pHYs - before IDAT
 | 
					        # pHYs - before IDAT
 | 
				
			||||||
        self.assertLess(chunks.index(b"pHYs"), chunks.index(b"IDAT"))
 | 
					        self.assertLess(chunks.index(b"pHYs"), chunks.index(b"IDAT"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_getchunks(self):
 | 
				
			||||||
 | 
					        im = hopper()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        chunks = PngImagePlugin.getchunks(im)
 | 
				
			||||||
 | 
					        self.assertEqual(len(chunks), 3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@unittest.skipIf(sys.platform.startswith('win32'), "requires Unix or MacOS")
 | 
					@unittest.skipIf(sys.platform.startswith('win32'), "requires Unix or MacOS")
 | 
				
			||||||
class TestTruncatedPngPLeaks(PillowTestCase):
 | 
					class TestTruncatedPngPLeaks(PillowTestCase):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -85,6 +85,10 @@ class TestFileTiff(PillowTestCase):
 | 
				
			||||||
        im = Image.open("Tests/images/copyleft.tiff")
 | 
					        im = Image.open("Tests/images/copyleft.tiff")
 | 
				
			||||||
        self.assertEqual(im.mode, 'RGB')
 | 
					        self.assertEqual(im.mode, 'RGB')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_set_legacy_api(self):
 | 
				
			||||||
 | 
					        with self.assertRaises(Exception):
 | 
				
			||||||
 | 
					            ImageFileDirectory_v2.legacy_api = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_xyres_tiff(self):
 | 
					    def test_xyres_tiff(self):
 | 
				
			||||||
        filename = "Tests/images/pil168.tif"
 | 
					        filename = "Tests/images/pil168.tif"
 | 
				
			||||||
        im = Image.open(filename)
 | 
					        im = Image.open(filename)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,7 @@
 | 
				
			||||||
from helper import unittest, PillowTestCase, hopper
 | 
					from helper import unittest, PillowTestCase, hopper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from PIL import Image
 | 
					from PIL import Image
 | 
				
			||||||
 | 
					from PIL import WmfImagePlugin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestFileWmf(PillowTestCase):
 | 
					class TestFileWmf(PillowTestCase):
 | 
				
			||||||
| 
						 | 
					@ -26,6 +28,23 @@ class TestFileWmf(PillowTestCase):
 | 
				
			||||||
            imref.load()
 | 
					            imref.load()
 | 
				
			||||||
            self.assert_image_similar(im, imref, 2.0)
 | 
					            self.assert_image_similar(im, imref, 2.0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_register_handler(self):
 | 
				
			||||||
 | 
					        class TestHandler:
 | 
				
			||||||
 | 
					            methodCalled = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            def save(self, im, fp, filename):
 | 
				
			||||||
 | 
					                self.methodCalled = True
 | 
				
			||||||
 | 
					        handler = TestHandler()
 | 
				
			||||||
 | 
					        WmfImagePlugin.register_handler(handler)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        im = hopper()
 | 
				
			||||||
 | 
					        tmpfile = self.tempfile("temp.wmf")
 | 
				
			||||||
 | 
					        im.save(tmpfile)
 | 
				
			||||||
 | 
					        self.assertTrue(handler.methodCalled)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Restore the state before this test
 | 
				
			||||||
 | 
					        WmfImagePlugin.register_handler(None)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_save(self):
 | 
					    def test_save(self):
 | 
				
			||||||
        im = hopper()
 | 
					        im = hopper()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,6 +70,9 @@ class TestImage(PillowTestCase):
 | 
				
			||||||
            im = io.BytesIO(b'')
 | 
					            im = io.BytesIO(b'')
 | 
				
			||||||
        self.assertRaises(IOError, lambda: Image.open(im))
 | 
					        self.assertRaises(IOError, lambda: Image.open(im))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_bad_mode(self):
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError, lambda: Image.open("filename", "bad mode"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @unittest.skipIf(sys.version_info < (3, 4),
 | 
					    @unittest.skipIf(sys.version_info < (3, 4),
 | 
				
			||||||
                     "pathlib only available in Python 3.4 or later")
 | 
					                     "pathlib only available in Python 3.4 or later")
 | 
				
			||||||
    def test_pathlib(self):
 | 
					    def test_pathlib(self):
 | 
				
			||||||
| 
						 | 
					@ -273,6 +276,20 @@ class TestImage(PillowTestCase):
 | 
				
			||||||
                                target.crop((32, 32, 96, 96)))
 | 
					                                target.crop((32, 32, 96, 96)))
 | 
				
			||||||
        self.assertEqual(source.size, (128, 128))
 | 
					        self.assertEqual(source.size, (128, 128))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # errors
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError,
 | 
				
			||||||
 | 
					            lambda: source.alpha_composite(over, "invalid source"))
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError,
 | 
				
			||||||
 | 
					            lambda: source.alpha_composite(over, (0, 0), "invalid destination"))
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError,
 | 
				
			||||||
 | 
					            lambda: source.alpha_composite(over, (0)))
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError,
 | 
				
			||||||
 | 
					            lambda: source.alpha_composite(over, (0, 0), (0)))
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError,
 | 
				
			||||||
 | 
					            lambda: source.alpha_composite(over, (0, -1)))
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError,
 | 
				
			||||||
 | 
					            lambda: source.alpha_composite(over, (0, 0), (0, -1)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_registered_extensions_uninitialized(self):
 | 
					    def test_registered_extensions_uninitialized(self):
 | 
				
			||||||
        # Arrange
 | 
					        # Arrange
 | 
				
			||||||
        Image._initialized = 0
 | 
					        Image._initialized = 0
 | 
				
			||||||
| 
						 | 
					@ -445,6 +462,11 @@ class TestImage(PillowTestCase):
 | 
				
			||||||
            target = Image.open(target_file).convert(mode)
 | 
					            target = Image.open(target_file).convert(mode)
 | 
				
			||||||
            self.assert_image_equal(im, target)
 | 
					            self.assert_image_equal(im, target)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_remap_palette(self):
 | 
				
			||||||
 | 
					        # Test illegal image mode
 | 
				
			||||||
 | 
					        im = hopper()
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError, lambda: im.remap_palette(None))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MockEncoder(object):
 | 
					class MockEncoder(object):
 | 
				
			||||||
    pass
 | 
					    pass
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,9 @@ class TestImageFromBytes(PillowTestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assert_image_equal(im1, im2)
 | 
					        self.assert_image_equal(im1, im2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_not_implemented(self):
 | 
				
			||||||
 | 
					        self.assertRaises(NotImplementedError, Image.fromstring)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    unittest.main()
 | 
					    unittest.main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -112,6 +112,10 @@ class TestImageResize(PillowTestCase):
 | 
				
			||||||
            resize(mode, (112, 103))
 | 
					            resize(mode, (112, 103))
 | 
				
			||||||
            resize(mode, (188, 214))
 | 
					            resize(mode, (188, 214))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Test unknown resampling filter
 | 
				
			||||||
 | 
					        im = hopper()
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError, lambda: im.resize((10, 10), "unknown"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    unittest.main()
 | 
					    unittest.main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -144,6 +144,12 @@ class TestImageCms(PillowTestCase):
 | 
				
			||||||
            'IEC 61966-2.1 Default RGB colour space - sRGB')
 | 
					            'IEC 61966-2.1 Default RGB colour space - sRGB')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_exceptions(self):
 | 
					    def test_exceptions(self):
 | 
				
			||||||
 | 
					        # Test mode mismatch
 | 
				
			||||||
 | 
					        psRGB = ImageCms.createProfile("sRGB")
 | 
				
			||||||
 | 
					        pLab = ImageCms.createProfile("LAB")
 | 
				
			||||||
 | 
					        t = ImageCms.buildTransform(pLab, psRGB, "LAB", "RGB")
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError, lambda: t.apply_in_place(hopper("RGBA")))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # the procedural pyCMS API uses PyCMSError for all sorts of errors
 | 
					        # the procedural pyCMS API uses PyCMSError for all sorts of errors
 | 
				
			||||||
        self.assertRaises(
 | 
					        self.assertRaises(
 | 
				
			||||||
            ImageCms.PyCMSError,
 | 
					            ImageCms.PyCMSError,
 | 
				
			||||||
| 
						 | 
					@ -167,6 +173,14 @@ class TestImageCms(PillowTestCase):
 | 
				
			||||||
        ImageCms.createProfile("LAB", 5000)
 | 
					        ImageCms.createProfile("LAB", 5000)
 | 
				
			||||||
        ImageCms.createProfile("LAB", 6500)
 | 
					        ImageCms.createProfile("LAB", 6500)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_unsupported_color_space(self):
 | 
				
			||||||
 | 
					        self.assertRaises(ImageCms.PyCMSError,
 | 
				
			||||||
 | 
					            lambda: ImageCms.createProfile("unsupported"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_invalid_color_temperature(self):
 | 
				
			||||||
 | 
					        self.assertRaises(ImageCms.PyCMSError,
 | 
				
			||||||
 | 
					            lambda: ImageCms.createProfile("LAB", "invalid"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_simple_lab(self):
 | 
					    def test_simple_lab(self):
 | 
				
			||||||
        i = Image.new('RGB', (10, 10), (128, 128, 128))
 | 
					        i = Image.new('RGB', (10, 10), (128, 128, 128))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,20 +2,18 @@ from helper import unittest, PillowTestCase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from PIL import ImagePalette, Image
 | 
					from PIL import ImagePalette, Image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ImagePalette = ImagePalette.ImagePalette
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
class TestImagePalette(PillowTestCase):
 | 
					class TestImagePalette(PillowTestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_sanity(self):
 | 
					    def test_sanity(self):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ImagePalette("RGB", list(range(256))*3)
 | 
					        ImagePalette.ImagePalette("RGB", list(range(256))*3)
 | 
				
			||||||
        self.assertRaises(
 | 
					        self.assertRaises(ValueError,
 | 
				
			||||||
            ValueError, lambda: ImagePalette("RGB", list(range(256))*2))
 | 
					            lambda: ImagePalette.ImagePalette("RGB", list(range(256))*2))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_getcolor(self):
 | 
					    def test_getcolor(self):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        palette = ImagePalette()
 | 
					        palette = ImagePalette.ImagePalette()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        test_map = {}
 | 
					        test_map = {}
 | 
				
			||||||
        for i in range(256):
 | 
					        for i in range(256):
 | 
				
			||||||
| 
						 | 
					@ -24,34 +22,34 @@ class TestImagePalette(PillowTestCase):
 | 
				
			||||||
        self.assertEqual(len(test_map), 256)
 | 
					        self.assertEqual(len(test_map), 256)
 | 
				
			||||||
        self.assertRaises(ValueError, lambda: palette.getcolor((1, 2, 3)))
 | 
					        self.assertRaises(ValueError, lambda: palette.getcolor((1, 2, 3)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Test unknown color specifier
 | 
				
			||||||
 | 
					        self.assertRaises(ValueError, lambda: palette.getcolor("unknown"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_file(self):
 | 
					    def test_file(self):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        palette = ImagePalette("RGB", list(range(256))*3)
 | 
					        palette = ImagePalette.ImagePalette("RGB", list(range(256))*3)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        f = self.tempfile("temp.lut")
 | 
					        f = self.tempfile("temp.lut")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        palette.save(f)
 | 
					        palette.save(f)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        from PIL.ImagePalette import load, raw
 | 
					        p = ImagePalette.load(f)
 | 
				
			||||||
 | 
					 | 
				
			||||||
        p = load(f)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # load returns raw palette information
 | 
					        # load returns raw palette information
 | 
				
			||||||
        self.assertEqual(len(p[0]), 768)
 | 
					        self.assertEqual(len(p[0]), 768)
 | 
				
			||||||
        self.assertEqual(p[1], "RGB")
 | 
					        self.assertEqual(p[1], "RGB")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        p = raw(p[1], p[0])
 | 
					        p = ImagePalette.raw(p[1], p[0])
 | 
				
			||||||
        self.assertIsInstance(p, ImagePalette)
 | 
					        self.assertIsInstance(p, ImagePalette.ImagePalette)
 | 
				
			||||||
        self.assertEqual(p.palette, palette.tobytes())
 | 
					        self.assertEqual(p.palette, palette.tobytes())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_make_linear_lut(self):
 | 
					    def test_make_linear_lut(self):
 | 
				
			||||||
        # Arrange
 | 
					        # Arrange
 | 
				
			||||||
        from PIL.ImagePalette import make_linear_lut
 | 
					 | 
				
			||||||
        black = 0
 | 
					        black = 0
 | 
				
			||||||
        white = 255
 | 
					        white = 255
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Act
 | 
					        # Act
 | 
				
			||||||
        lut = make_linear_lut(black, white)
 | 
					        lut = ImagePalette.make_linear_lut(black, white)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Assert
 | 
					        # Assert
 | 
				
			||||||
        self.assertIsInstance(lut, list)
 | 
					        self.assertIsInstance(lut, list)
 | 
				
			||||||
| 
						 | 
					@ -63,22 +61,20 @@ class TestImagePalette(PillowTestCase):
 | 
				
			||||||
    def test_make_linear_lut_not_yet_implemented(self):
 | 
					    def test_make_linear_lut_not_yet_implemented(self):
 | 
				
			||||||
        # Update after FIXME
 | 
					        # Update after FIXME
 | 
				
			||||||
        # Arrange
 | 
					        # Arrange
 | 
				
			||||||
        from PIL.ImagePalette import make_linear_lut
 | 
					 | 
				
			||||||
        black = 1
 | 
					        black = 1
 | 
				
			||||||
        white = 255
 | 
					        white = 255
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Act
 | 
					        # Act
 | 
				
			||||||
        self.assertRaises(
 | 
					        self.assertRaises(
 | 
				
			||||||
            NotImplementedError,
 | 
					            NotImplementedError,
 | 
				
			||||||
            lambda: make_linear_lut(black, white))
 | 
					            lambda: ImagePalette.make_linear_lut(black, white))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_make_gamma_lut(self):
 | 
					    def test_make_gamma_lut(self):
 | 
				
			||||||
        # Arrange
 | 
					        # Arrange
 | 
				
			||||||
        from PIL.ImagePalette import make_gamma_lut
 | 
					 | 
				
			||||||
        exp = 5
 | 
					        exp = 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Act
 | 
					        # Act
 | 
				
			||||||
        lut = make_gamma_lut(exp)
 | 
					        lut = ImagePalette.make_gamma_lut(exp)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Assert
 | 
					        # Assert
 | 
				
			||||||
        self.assertIsInstance(lut, list)
 | 
					        self.assertIsInstance(lut, list)
 | 
				
			||||||
| 
						 | 
					@ -92,8 +88,7 @@ class TestImagePalette(PillowTestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_rawmode_valueerrors(self):
 | 
					    def test_rawmode_valueerrors(self):
 | 
				
			||||||
        # Arrange
 | 
					        # Arrange
 | 
				
			||||||
        from PIL.ImagePalette import raw
 | 
					        palette = ImagePalette.raw("RGB", list(range(256))*3)
 | 
				
			||||||
        palette = raw("RGB", list(range(256))*3)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Act / Assert
 | 
					        # Act / Assert
 | 
				
			||||||
        self.assertRaises(ValueError, palette.tobytes)
 | 
					        self.assertRaises(ValueError, palette.tobytes)
 | 
				
			||||||
| 
						 | 
					@ -104,7 +99,7 @@ class TestImagePalette(PillowTestCase):
 | 
				
			||||||
    def test_getdata(self):
 | 
					    def test_getdata(self):
 | 
				
			||||||
        # Arrange
 | 
					        # Arrange
 | 
				
			||||||
        data_in = list(range(256))*3
 | 
					        data_in = list(range(256))*3
 | 
				
			||||||
        palette = ImagePalette("RGB", data_in)
 | 
					        palette = ImagePalette.ImagePalette("RGB", data_in)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Act
 | 
					        # Act
 | 
				
			||||||
        mode, data_out = palette.getdata()
 | 
					        mode, data_out = palette.getdata()
 | 
				
			||||||
| 
						 | 
					@ -114,9 +109,8 @@ class TestImagePalette(PillowTestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_rawmode_getdata(self):
 | 
					    def test_rawmode_getdata(self):
 | 
				
			||||||
        # Arrange
 | 
					        # Arrange
 | 
				
			||||||
        from PIL.ImagePalette import raw
 | 
					 | 
				
			||||||
        data_in = list(range(256))*3
 | 
					        data_in = list(range(256))*3
 | 
				
			||||||
        palette = raw("RGB", data_in)
 | 
					        palette = ImagePalette.raw("RGB", data_in)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Act
 | 
					        # Act
 | 
				
			||||||
        rawmode, data_out = palette.getdata()
 | 
					        rawmode, data_out = palette.getdata()
 | 
				
			||||||
| 
						 | 
					@ -138,6 +132,10 @@ class TestImagePalette(PillowTestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.assert_image_equal(img, reloaded)
 | 
					        self.assert_image_equal(img, reloaded)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_invalid_palette(self):
 | 
				
			||||||
 | 
					        self.assertRaises(IOError,
 | 
				
			||||||
 | 
					            lambda: ImagePalette.load("Tests/images/hopper.jpg"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					if __name__ == '__main__':
 | 
				
			||||||
    unittest.main()
 | 
					    unittest.main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
from helper import unittest, PillowTestCase
 | 
					from helper import unittest, PillowTestCase, hopper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from PIL import Image
 | 
					from PIL import Image
 | 
				
			||||||
from PIL import ImageShow
 | 
					from PIL import ImageShow
 | 
				
			||||||
| 
						 | 
					@ -10,6 +10,24 @@ class TestImageShow(PillowTestCase):
 | 
				
			||||||
        dir(Image)
 | 
					        dir(Image)
 | 
				
			||||||
        dir(ImageShow)
 | 
					        dir(ImageShow)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_register(self):
 | 
				
			||||||
 | 
					        # Test registering a viewer that is not a class
 | 
				
			||||||
 | 
					        ImageShow.register("not a class")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_show(self):
 | 
				
			||||||
 | 
					        class TestViewer:
 | 
				
			||||||
 | 
					            methodCalled = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            def show(self, image, title=None, **options):
 | 
				
			||||||
 | 
					                self.methodCalled = True
 | 
				
			||||||
 | 
					                return True
 | 
				
			||||||
 | 
					        viewer = TestViewer()
 | 
				
			||||||
 | 
					        ImageShow.register(viewer, -1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        im = hopper()
 | 
				
			||||||
 | 
					        self.assertTrue(ImageShow.show(im))
 | 
				
			||||||
 | 
					        self.assertTrue(viewer.methodCalled)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_viewer(self):
 | 
					    def test_viewer(self):
 | 
				
			||||||
        viewer = ImageShow.Viewer()
 | 
					        viewer = ImageShow.Viewer()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user