From baf811f38581303c270f92eaf44197bd650155fb Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauldmccarthy@gmail.com>
Date: Wed, 1 Nov 2017 09:44:53 +0000
Subject: [PATCH] Unit test for new Atlas.prepareMask method

---
 tests/test_atlases.py | 40 +++++++++++++++++++++++++++++++++++++---
 1 file changed, 37 insertions(+), 3 deletions(-)

diff --git a/tests/test_atlases.py b/tests/test_atlases.py
index ca4075d03..e8538b4fc 100644
--- a/tests/test_atlases.py
+++ b/tests/test_atlases.py
@@ -18,8 +18,9 @@ import mock
 import pytest
 
 import tests
-import fsl.data.atlases as atlases
-import fsl.data.image   as fslimage
+import fsl.utils.transform as transform
+import fsl.data.atlases    as atlases
+import fsl.data.image     as fslimage
 
 
 datadir = op.join(op.dirname(__file__), 'testdata')
@@ -233,7 +234,7 @@ def test_load_atlas():
 def test_find():
 
     reg = atlases.registry
-    reg.rescanAtlases
+    reg.rescanAtlases()
 
     probatlas    = reg.loadAtlas('harvardoxford-cortical')
     probsumatlas = reg.loadAtlas('harvardoxford-cortical', loadSummary=True)
@@ -260,3 +261,36 @@ def test_find():
         maxval = max([l.value for l in labels])
         with pytest.raises(KeyError):
             atlas.find(value=maxval + 1)
+
+
+def test_prepareMask():
+
+    reg = atlases.registry
+    reg.rescanAtlases()
+
+    probatlas    = reg.loadAtlas('harvardoxford-cortical')
+    probsumatlas = reg.loadAtlas('harvardoxford-cortical', loadSummary=True)
+    lblatlas     = reg.loadAtlas('talairach')
+
+    for atlas in [probatlas, probsumatlas, lblatlas]:
+
+        ashape        = list(atlas.shape[:3])
+        m2shape       = [s * 1.5 for s in ashape]
+        goodmask1     = fslimage.Image(np.random.random(ashape),
+                                       xform=atlas.voxToWorldMat)
+        goodmask2, xf = goodmask1.resample(m2shape)
+        goodmask2     = fslimage.Image(goodmask2, xform=xf)
+
+        wrongdims     = fslimage.Image(
+            np.random.random(list(ashape) + [10]))
+        wrongspace    = fslimage.Image(
+            np.random.random((20, 20, 20)),
+            xform=transform.concat(atlas.voxToWorldMat, np.diag([2, 2, 2, 1])))
+
+        with pytest.raises(atlases.MaskError):
+            atlas.prepareMask(wrongdims)
+        with pytest.raises(atlases.MaskError):
+            atlas.prepareMask(wrongspace)
+
+        assert list(atlas.prepareMask(goodmask1).shape) == ashape
+        assert list(atlas.prepareMask(goodmask2).shape) == ashape
-- 
GitLab