diff --git a/skimage/io/tests/test_mpl_imshow.py b/skimage/io/tests/test_mpl_imshow.py new file mode 100644 index 00000000..fbc517f9 --- /dev/null +++ b/skimage/io/tests/test_mpl_imshow.py @@ -0,0 +1,63 @@ +from __future__ import division + +import numpy as np +from skimage import io + +io.use_plugin('matplotlib', 'imshow') + + +# test images. Note that they don't have their full range for their dtype, +# but we still expect the display range to equal the full dtype range. +im8 = np.array([[0, 64], [128, 240]], np.uint8) +im16 = im8.astype(np.uint16) * 256 +imf = im8 / 255 +im_lo = imf / 1000 +im_hi = imf + 10 + + + +def n_subplots(ax_im): + """Return the number of subplots in the figure containing an ``AxesImage``. + + Parameters + ---------- + ax_im : matplotlib.pyplot.AxesImage object + The input ``AxesImage``. + + Returns + ------- + n : int + The number of subplots in the corresponding figure. + + Notes + ----- + This function is intended to check whether a colorbar was drawn, in + which case two subplots are expected. For standard imshows, one + subplot is expected. + """ + return len(ax_im.get_figure().get_axes()) + + +def test_uint8(): + ax_im = io.imshow(im8) + assert ax_im.cmap.name == 'gray' + assert ax_im.get_clim() == (0, 255) + assert n_subplots(ax_im) == 1 + + +def test_uint16(): + ax_im = io.imshow(im16) + assert ax_im.cmap.name == 'gray' + assert ax_im.get_clim() == (0, 65535) + assert n_subplots(ax_im) == 1 + + +def test_float(): + ax_im = io.imshow(imf) + assert ax_im.cmap.name == 'gray' + assert ax_im.get_clim() == (0, 1) + assert n_subplots(ax_im) == 1 + + +if __name__ == '__main__': + np.testing.run_module_suite()