forked from matplotlib/matplotlib
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_png.py
More file actions
53 lines (40 loc) · 1.37 KB
/
test_png.py
File metadata and controls
53 lines (40 loc) · 1.37 KB
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
from io import BytesIO
from pathlib import Path
import pytest
from matplotlib.testing.decorators import image_comparison
from matplotlib import cm, pyplot as plt
@image_comparison(['pngsuite.png'], tol=0.09)
def test_pngsuite():
files = sorted(
(Path(__file__).parent / "baseline_images/pngsuite").glob("basn*.png"))
plt.figure(figsize=(len(files), 2))
for i, fname in enumerate(files):
data = plt.imread(fname)
cmap = None # use default colormap
if data.ndim == 2:
# keep grayscale images gray
cmap = cm.gray
# Using the old default data interpolation stage lets us
# continue to use the existing reference image
plt.imshow(data, extent=(i, i + 1, 0, 1), cmap=cmap,
interpolation_stage='data')
plt.gca().patch.set_facecolor("#ddffff")
plt.gca().set_xlim(0, len(files))
def test_truncated_file(tmp_path):
path = tmp_path / 'test.png'
path_t = tmp_path / 'test_truncated.png'
plt.savefig(path)
with open(path, 'rb') as fin:
buf = fin.read()
with open(path_t, 'wb') as fout:
fout.write(buf[:20])
with pytest.raises(Exception):
plt.imread(path_t)
def test_truncated_buffer():
b = BytesIO()
plt.savefig(b)
b.seek(0)
b2 = BytesIO(b.read(20))
b2.seek(0)
with pytest.raises(Exception):
plt.imread(b2)