/
test_file_im.py
116 lines (78 loc) · 2.45 KB
/
test_file_im.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import filecmp
import warnings
import pytest
from PIL import Image, ImImagePlugin
from .helper import assert_image_equal_tofile, hopper, is_pypy
# sample im
TEST_IM = "Tests/images/hopper.im"
def test_sanity():
with Image.open(TEST_IM) as im:
im.load()
assert im.mode == "RGB"
assert im.size == (128, 128)
assert im.format == "IM"
def test_name_limit(tmp_path):
out = str(tmp_path / ("name_limit_test" * 7 + ".im"))
with Image.open(TEST_IM) as im:
im.save(out)
assert filecmp.cmp(out, "Tests/images/hopper_long_name.im")
@pytest.mark.skipif(is_pypy(), reason="Requires CPython")
def test_unclosed_file():
def open():
im = Image.open(TEST_IM)
im.load()
pytest.warns(ResourceWarning, open)
def test_closed_file():
with warnings.catch_warnings():
im = Image.open(TEST_IM)
im.load()
im.close()
def test_context_manager():
with warnings.catch_warnings():
with Image.open(TEST_IM) as im:
im.load()
def test_tell():
# Arrange
with Image.open(TEST_IM) as im:
# Act
frame = im.tell()
# Assert
assert frame == 0
def test_n_frames():
with Image.open(TEST_IM) as im:
assert im.n_frames == 1
assert not im.is_animated
def test_eoferror():
with Image.open(TEST_IM) as im:
n_frames = im.n_frames
# Test seeking past the last frame
with pytest.raises(EOFError):
im.seek(n_frames)
assert im.tell() < n_frames
# Test that seeking to the last frame does not raise an error
im.seek(n_frames - 1)
@pytest.mark.parametrize("mode", ("RGB", "P", "PA"))
def test_roundtrip(mode, tmp_path):
out = str(tmp_path / "temp.im")
im = hopper(mode)
im.save(out)
assert_image_equal_tofile(im, out)
def test_small_palette(tmp_path):
im = Image.new("P", (1, 1))
colors = [0, 1, 2]
im.putpalette(colors)
out = str(tmp_path / "temp.im")
im.save(out)
with Image.open(out) as reloaded:
assert reloaded.getpalette() == colors + [0] * 765
def test_save_unsupported_mode(tmp_path):
out = str(tmp_path / "temp.im")
im = hopper("HSV")
with pytest.raises(ValueError):
im.save(out)
def test_invalid_file():
invalid_file = "Tests/images/flower.jpg"
with pytest.raises(SyntaxError):
ImImagePlugin.ImImageFile(invalid_file)
def test_number():
assert ImImagePlugin.number("1.2") == 1.2