Pillow

Форк
0
/
test_file_gribstub.py 
86 строк · 2.0 Кб
1
from __future__ import annotations
2

3
from pathlib import Path
4
from typing import IO
5

6
import pytest
7

8
from PIL import GribStubImagePlugin, Image, ImageFile
9

10
from .helper import hopper
11

12
TEST_FILE = "Tests/images/WAlaska.wind.7days.grb"
13

14

15
def test_open() -> None:
16
    # Act
17
    with Image.open(TEST_FILE) as im:
18
        # Assert
19
        assert im.format == "GRIB"
20

21
        # Dummy data from the stub
22
        assert im.mode == "F"
23
        assert im.size == (1, 1)
24

25

26
def test_invalid_file() -> None:
27
    # Arrange
28
    invalid_file = "Tests/images/flower.jpg"
29

30
    # Act / Assert
31
    with pytest.raises(SyntaxError):
32
        GribStubImagePlugin.GribStubImageFile(invalid_file)
33

34

35
def test_load() -> None:
36
    # Arrange
37
    with Image.open(TEST_FILE) as im:
38
        # Act / Assert: stub cannot load without an implemented handler
39
        with pytest.raises(OSError):
40
            im.load()
41

42

43
def test_save(tmp_path: Path) -> None:
44
    # Arrange
45
    im = hopper()
46
    tmpfile = str(tmp_path / "temp.grib")
47

48
    # Act / Assert: stub cannot save without an implemented handler
49
    with pytest.raises(OSError):
50
        im.save(tmpfile)
51

52

53
def test_handler(tmp_path: Path) -> None:
54
    class TestHandler(ImageFile.StubHandler):
55
        opened = False
56
        loaded = False
57
        saved = False
58

59
        def open(self, im: Image.Image) -> None:
60
            self.opened = True
61

62
        def load(self, im: Image.Image) -> Image.Image:
63
            self.loaded = True
64
            im.fp.close()
65
            return Image.new("RGB", (1, 1))
66

67
        def is_loaded(self) -> bool:
68
            return self.loaded
69

70
        def save(self, im: Image.Image, fp: IO[bytes], filename: str) -> None:
71
            self.saved = True
72

73
    handler = TestHandler()
74
    GribStubImagePlugin.register_handler(handler)
75
    with Image.open(TEST_FILE) as im:
76
        assert handler.opened
77
        assert not handler.is_loaded()
78

79
        im.load()
80
        assert handler.is_loaded()
81

82
        temp_file = str(tmp_path / "temp.grib")
83
        im.save(temp_file)
84
        assert handler.saved
85

86
    GribStubImagePlugin._handler = None
87

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.