From 1803a43d9410a0048931f18bef1f020be0816393 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Mon, 24 Jun 2019 19:47:14 +0930 Subject: [PATCH] TEST: Bitmap tests --- setup.cfg | 1 + tests/test_bitmap.py | 63 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 tests/test_bitmap.py diff --git a/setup.cfg b/setup.cfg index e82f3b444..0c604f57e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -11,6 +11,7 @@ universal=1 # - dicomtest: Requires dcm2niix # - meshtest: Requires trimesh and rtree # - igziptest: Requires indexed_gzip +# - piltest: Requires Pillow # - noroottest: Need to be executed as # non-root user (will fail # otherwise) diff --git a/tests/test_bitmap.py b/tests/test_bitmap.py new file mode 100644 index 000000000..b59c4083e --- /dev/null +++ b/tests/test_bitmap.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# +# test_bitmap.py - +# +# Author: Paul McCarthy <pauldmccarthy@gmail.com> +# + + +import numpy as np + +import pytest + +import fsl.utils.tempdir as tempdir +import fsl.data.bitmap as fslbmp + + +@pytest.mark.piltest +def test_bitmap(): + + from PIL import Image + + with tempdir.tempdir(): + data = np.random.randint(0, 255, (100, 200, 4), dtype=np.uint8) + img = Image.fromarray(data, mode='RGBA') + + img.save('image.png') + + bmp = fslbmp.Bitmap('image.png') + + assert bmp.name == 'image.png' + assert bmp.dataSource == 'image.png' + assert bmp.shape == (200, 100, 4) + + repr(bmp) + hash(bmp) + + assert np.all(bmp.data == np.fliplr(data.transpose(1, 0, 2))) + + +@pytest.mark.piltest +def test_bitmap_asImage(): + from PIL import Image + + with tempdir.tempdir(): + d3 = np.random.randint(0, 255, (100, 200, 3), dtype=np.uint8) + d4 = np.random.randint(0, 255, (100, 200, 4), dtype=np.uint8) + + img3 = Image.fromarray(d3, mode='RGB') + img4 = Image.fromarray(d4, mode='RGBA') + + img3.save('rgb.png') + img4.save('rgba.png') + + bmp3 = fslbmp.Bitmap('rgb.png') + bmp4 = fslbmp.Bitmap('rgba.png') + + i3 = bmp3.asImage() + i4 = bmp4.asImage() + + assert i3.shape == (200, 100, 1) + assert i4.shape == (200, 100, 1) + assert i3.nvals == 3 + assert i4.nvals == 4 -- GitLab