From e44f5677805affe4cda896e143c14f945a52c87a Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 23 Oct 2018 22:34:29 -0500 Subject: [PATCH] Add a test for an image that works with other GIF decoders. This test is fixed by the next commits. --- Tests/images/transparent_dispose.gif | Bin 0 -> 95 bytes Tests/test_file_gif.py | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 Tests/images/transparent_dispose.gif diff --git a/Tests/images/transparent_dispose.gif b/Tests/images/transparent_dispose.gif new file mode 100644 index 0000000000000000000000000000000000000000..92b615543de7a4c82a3a3449e27b81d8efa7d4fe GIT binary patch literal 95 zcmZ?wbhEHbWM*Jwn8?7u@LvLmfiw^({$ye0Vqjv>0dYX`3`|TRAs}H+BQ)Wb0I+JX PFi;&(Em*Y=BZD;nY>Eoh literal 0 HcmV?d00001 diff --git a/Tests/test_file_gif.py b/Tests/test_file_gif.py index 6a4b14d40..f1d9d688f 100644 --- a/Tests/test_file_gif.py +++ b/Tests/test_file_gif.py @@ -273,6 +273,26 @@ class TestFileGif(PillowTestCase): except EOFError: pass + def test_n_frames_invariant(self): + # Regression test: make sure that reading n_frames doesn't cause the + # current image to change. + img = Image.open("Tests/images/transparent_dispose.gif") + before = img.tobytes() + + self.assertEqual(img.n_frames, 3) + self.assertEqual(before, img.tobytes()) + + def test_transparent_dispose(self): + img = Image.open("Tests/images/transparent_dispose.gif") + + expected_colors = [(2, 1, 2), (0, 1, 0), (2, 1, 2)] + for frame in range(3): + img.seek(frame) + for x in range(3): + color = img.getpixel((x,0)) + self.assertEqual(color, expected_colors[frame][x], + 'frame %i, x %i' % (frame, x)) + def test_dispose_previous(self): img = Image.open("Tests/images/dispose_prev.gif") try: