From 76328be63c9344d752bd237af48ec6366890f403 Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauldmccarthy@gmail.com>
Date: Fri, 29 Nov 2019 17:50:19 +0000
Subject: [PATCH] TEST: rudimentary test for rescale

---
 tests/test_transform/test_affine.py | 45 +++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/tests/test_transform/test_affine.py b/tests/test_transform/test_affine.py
index 7a69b86e4..79a17fba6 100644
--- a/tests/test_transform/test_affine.py
+++ b/tests/test_transform/test_affine.py
@@ -528,3 +528,48 @@ def test_rmsdev():
         assert result < lastdist
 
         lastdist = result
+
+
+def test_rescale():
+
+    with pytest.raises(ValueError):
+        affine.rescale((5, 5), (10, 10, 10))
+
+    assert np.all(affine.rescale((5, 5),       (5, 5))       == np.eye(3))
+    assert np.all(affine.rescale((5, 5, 5),    (5, 5, 5))    == np.eye(4))
+    assert np.all(affine.rescale((5, 5, 5, 5), (5, 5, 5, 5)) == np.eye(5))
+
+    # (old shape, new shape, origin, expect)
+    tests = [
+        ((5, 5), (10, 10), 'centre', np.array([[0.5, 0,    0],
+                                               [0,   0.5,  0],
+                                               [0,   0,    1]])),
+        ((5, 5), (10, 10), 'corner', np.array([[0.5, 0,   -0.25],
+                                               [0,   0.5, -0.25],
+                                               [0,   0,    1]])),
+        ((5, 5, 5), (10, 10, 10), 'centre', np.array([[0.5, 0,    0,   0],
+                                                      [0,   0.5,  0,   0],
+                                                      [0,   0,    0.5, 0],
+                                                      [0,   0,    0,   1]])),
+        ((5, 5, 5), (10, 10, 10), 'corner', np.array([[0.5, 0,    0,   -0.25],
+                                                      [0,   0.5,  0,   -0.25],
+                                                      [0,   0,    0.5, -0.25],
+                                                      [0,   0,    0,    1]])),
+        ((5, 5, 5, 5), (10, 10, 10, 10), 'centre', np.array([[0.5, 0,    0,   0,   0],
+                                                             [0,   0.5,  0,   0,   0],
+                                                             [0,   0,    0.5, 0,   0],
+                                                             [0,   0,    0,   0.5, 0],
+                                                             [0,   0,    0,   0,   1]])),
+        ((5, 5, 5, 5), (10, 10, 10, 10), 'corner', np.array([[0.5, 0,    0,   0,   -0.25],
+                                                             [0,   0.5,  0,   0,   -0.25],
+                                                             [0,   0,    0.5, 0,   -0.25],
+                                                             [0,   0,    0,   0.5, -0.25],
+                                                             [0,   0,    0,   0,   1]])),
+    ]
+
+    for oldshape, newshape, origin, expect in tests:
+
+        got = affine.rescale(oldshape, newshape, origin)
+        assert np.all(np.isclose(got, expect))
+        got = affine.rescale(newshape, oldshape, origin)
+        assert np.all(np.isclose(got, affine.invert(expect)))
-- 
GitLab