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