1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 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)
|