1
from __future__ import annotations
3
from pathlib import Path
8
from PIL import GribStubImagePlugin, Image, ImageFile
10
from .helper import hopper
12
TEST_FILE = "Tests/images/WAlaska.wind.7days.grb"
15
def test_open() -> None:
17
with Image.open(TEST_FILE) as im:
19
assert im.format == "GRIB"
23
assert im.size == (1, 1)
26
def test_invalid_file() -> None:
28
invalid_file = "Tests/images/flower.jpg"
31
with pytest.raises(SyntaxError):
32
GribStubImagePlugin.GribStubImageFile(invalid_file)
35
def test_load() -> None:
37
with Image.open(TEST_FILE) as im:
39
with pytest.raises(OSError):
43
def test_save(tmp_path: Path) -> None:
46
tmpfile = str(tmp_path / "temp.grib")
49
with pytest.raises(OSError):
53
def test_handler(tmp_path: Path) -> None:
54
class TestHandler(ImageFile.StubHandler):
59
def open(self, im: Image.Image) -> None:
62
def load(self, im: Image.Image) -> Image.Image:
65
return Image.new("RGB", (1, 1))
67
def is_loaded(self) -> bool:
70
def save(self, im: Image.Image, fp: IO[bytes], filename: str) -> None:
73
handler = TestHandler()
74
GribStubImagePlugin.register_handler(handler)
75
with Image.open(TEST_FILE) as im:
77
assert not handler.is_loaded()
80
assert handler.is_loaded()
82
temp_file = str(tmp_path / "temp.grib")
86
GribStubImagePlugin._handler = None