51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
|
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.03)
|
||
|
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
|
||
|
plt.imshow(data, extent=(i, i + 1, 0, 1), cmap=cmap)
|
||
|
|
||
|
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)
|