Merge pull request #2440 from hugovk/test-gribstub

Test GribStubImagePlugin for correctness
This commit is contained in:
wiredfool 2017-03-06 18:52:36 +00:00 committed by GitHub
commit 9da968fc0e
3 changed files with 29 additions and 4 deletions

View File

@ -10,6 +10,7 @@
# #
from . import Image, ImageFile from . import Image, ImageFile
from ._binary import i8
_handler = None _handler = None
@ -28,7 +29,7 @@ def register_handler(handler):
# Image adapter # Image adapter
def _accept(prefix): def _accept(prefix):
return prefix[0:4] == b"GRIB" and prefix[7] == b'\x01' return prefix[0:4] == b"GRIB" and i8(prefix[7]) == 1
class GribStubImageFile(ImageFile.StubImageFile): class GribStubImageFile(ImageFile.StubImageFile):

Binary file not shown.

View File

@ -1,21 +1,45 @@
from helper import unittest, PillowTestCase, hopper from helper import unittest, PillowTestCase, hopper
from PIL import GribStubImagePlugin from PIL import GribStubImagePlugin, Image
TEST_FILE = "Tests/images/WAlaska.wind.7days.grb"
class TestFileGribStub(PillowTestCase): class TestFileGribStub(PillowTestCase):
def test_open(self):
# Act
im = Image.open(TEST_FILE)
# Assert
self.assertEqual(im.format, "GRIB")
# Dummy data from the stub
self.assertEqual(im.mode, "F")
self.assertEqual(im.size, (1, 1))
def test_invalid_file(self): def test_invalid_file(self):
# Arrange
invalid_file = "Tests/images/flower.jpg" invalid_file = "Tests/images/flower.jpg"
# Act / Assert
self.assertRaises(SyntaxError, self.assertRaises(SyntaxError,
lambda: lambda:
GribStubImagePlugin.GribStubImageFile(invalid_file)) GribStubImagePlugin.GribStubImageFile(invalid_file))
def test_save(self): def test_load(self):
im = hopper() # Arrange
im = Image.open(TEST_FILE)
# Act / Assert: stub cannot load without an implemented handler
self.assertRaises(IOError, im.load)
def test_save(self):
# Arrange
im = hopper()
tmpfile = self.tempfile("temp.grib") tmpfile = self.tempfile("temp.grib")
# Act / Assert: stub cannot save without an implemented handler
self.assertRaises(IOError, lambda: im.save(tmpfile)) self.assertRaises(IOError, lambda: im.save(tmpfile))