1
from __future__ import annotations
3
from pathlib import Path
8
from PIL import BufrStubImagePlugin, Image, ImageFile
10
from .helper import hopper
12
TEST_FILE = "Tests/images/gfs.t06z.rassda.tm00.bufr_d"
15
def test_open() -> None:
17
with Image.open(TEST_FILE) as im:
19
assert im.format == "BUFR"
21
# Dummy data from the stub
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
BufrStubImagePlugin.BufrStubImageFile(invalid_file)
35
def test_load() -> None:
37
with Image.open(TEST_FILE) as im:
38
# Act / Assert: stub cannot load without an implemented handler
39
with pytest.raises(OSError):
43
def test_save(tmp_path: Path) -> None:
46
tmpfile = str(tmp_path / "temp.bufr")
48
# Act / Assert: stub cannot save without an implemented handler
49
with pytest.raises(OSError):
53
def test_handler(tmp_path: Path) -> None:
54
class TestHandler(ImageFile.StubHandler):
59
def open(self, im: ImageFile.StubImageFile) -> None:
62
def load(self, im: ImageFile.StubImageFile) -> 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
BufrStubImagePlugin.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.bufr")
86
BufrStubImagePlugin._handler = None