From 8e29c6fc4e42b794ee5a034b9f919a2223371fb4 Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauldmccarthy@gmail.com>
Date: Tue, 7 Nov 2017 18:39:34 +0000
Subject: [PATCH] unit tests  for imglob

---
 tests/test_imglob.py | 147 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 147 insertions(+)
 create mode 100644 tests/test_imglob.py

diff --git a/tests/test_imglob.py b/tests/test_imglob.py
new file mode 100644
index 000000000..333fbd104
--- /dev/null
+++ b/tests/test_imglob.py
@@ -0,0 +1,147 @@
+#!/usr/bin/env python
+#
+# test_imglob.py -
+#
+# Author: Paul McCarthy <pauldmccarthy@gmail.com>
+#
+
+import mock
+import pytest
+
+import fsl.scripts.imglob as imglob
+
+from tests import testdir
+from tests import CaptureStdout
+
+
+
+def test_imglob_shouldPass():
+
+    # (files to create, paths, output, expected)
+    tests = [
+
+        # normal usage, one file
+        ('file.hdr file.img', 'file',  None,     'file'),
+        ('file.hdr file.img', 'file', 'prefix',  'file'),
+        ('file.hdr file.img', 'file', 'primary', 'file.hdr'),
+        ('file.hdr file.img', 'file', 'all',     'file.hdr file.img'),
+
+        # incomplete file pair
+        ('file.hdr', 'file',               'prefix',  'file'),
+        ('file.hdr', 'file.hdr',           'prefix',  'file'),
+        ('file.hdr', 'file.img',           'prefix',  'file'),
+        ('file.hdr', 'file',               'primary', 'file.hdr'),
+        ('file.hdr', 'file.hdr',           'primary', 'file.hdr'),
+        ('file.hdr', 'file.img',           'primary', 'file.hdr'),
+        ('file.hdr', 'file',               'all',     'file.hdr'),
+        ('file.hdr', 'file.hdr',           'all',     'file.hdr'),
+        ('file.hdr', 'file.img',           'all',     'file.hdr'),
+
+        # same file specified multiple times
+        ('file.hdr file.img', 'file file',              'prefix',  'file'),
+        ('file.hdr file.img', 'file file.img',          'prefix',  'file'),
+        ('file.hdr file.img', 'file file.img file.hdr', 'prefix',  'file'),
+        ('file.hdr file.img', 'file file',              'primary', 'file.hdr'),
+        ('file.hdr file.img', 'file file.img',          'primary', 'file.hdr'),
+        ('file.hdr file.img', 'file file.img file.hdr', 'primary', 'file.hdr'),
+        ('file.hdr file.img', 'file file',              'all',     'file.hdr file.img'),
+        ('file.hdr file.img', 'file file.img',          'all',     'file.hdr file.img'),
+        ('file.hdr file.img', 'file file.img file.hdr', 'all',     'file.hdr file.img'),
+
+        # multiple files same prefix
+        ('file.hdr file.img file.nii', 'file', 'prefix',  'file'),
+        ('file.hdr file.img file.nii', 'file', 'primary', 'file.hdr file.nii'),
+        ('file.hdr file.img file.nii', 'file', 'all',     'file.hdr file.img file.nii'),
+
+        # multiple files
+        ('file1.hdr file1.img file2.nii', 'file1', 'prefix',  'file1'),
+        ('file1.hdr file1.img file2.nii', 'file1', 'primary', 'file1.hdr'),
+        ('file1.hdr file1.img file2.nii', 'file1', 'all',     'file1.hdr file1.img'),
+
+        ('file1.hdr file1.img file2.nii', 'file1 file2', 'prefix',  'file1 file2'),
+        ('file1.hdr file1.img file2.nii', 'file1 file2', 'primary', 'file1.hdr file2.nii'),
+        ('file1.hdr file1.img file2.nii', 'file1 file2', 'all',     'file1.hdr file1.img file2.nii'),
+
+        # no file
+        ('file.nii', 'bag', 'prefix',  ''),
+        ('file.nii', 'bag', 'primary', ''),
+        ('file.nii', 'bag', 'all',     ''),
+
+        # incomplete prefix
+        ('file.nii', 'fi', 'prefix',  ''),
+        ('file.nii', 'fi', 'primary', ''),
+        ('file.nii', 'fi', 'all',     ''),
+    ]
+
+
+    for to_create, paths, output, expected in tests:
+        with testdir(to_create.split()) as td:
+
+            paths    = paths.split()
+            expected = expected.split()
+            result   = imglob.imglob(paths, output)
+
+            assert sorted(result) == sorted(expected)
+
+
+def test_imglob_shouldFail():
+
+    with pytest.raises(ValueError):
+        imglob.imglob([], 'bag')
+
+
+def test_imglob_script_shouldPass():
+
+    # (files to create, args, expected)
+    tests = [
+        ('file.hdr file.img', 'file',                          'file'),
+        ('file.hdr file.img', '-extension file',               'file.hdr'),
+        ('file.hdr file.img', '-extensions file',              'file.hdr file.img'),
+        ('file.hdr file.img', 'file.hdr',                      'file'),
+        ('file.hdr file.img', ' -extension file.hdr',           'file.hdr'),
+        ('file.hdr file.img', '-extensions file.hdr',          'file.hdr file.img'),
+        ('file.hdr file.img', 'file.img',                      'file'),
+        ('file.hdr file.img', '-extension file.img',           'file.hdr'),
+        ('file.hdr file.img', '-extensions file.img',          'file.hdr file.img'),
+        ('file.hdr file.img', 'file.hdr file.img',             'file'),
+        ('file.hdr file.img', '-extension file.hdr file.img',  'file.hdr'),
+        ('file.hdr file.img', '-extensions file.hdr file.img', 'file.hdr file.img'),
+        ('file.hdr file.img', 'file file.img',                 'file'),
+        ('file.hdr file.img', '-extension file file.img',      'file.hdr'),
+        ('file.hdr file.img', '-extensions file file.img',     'file.hdr file.img'),
+
+        # no file or incomplete prefix
+        ('file.hdr file.img', 'bag',             ''),
+        ('file.hdr file.img', '-extension  bag', ''),
+        ('file.hdr file.img', '-extensions bag', ''),
+        ('file.hdr file.img', 'fi',              ''),
+        ('file.hdr file.img', '-extension  fi',  ''),
+        ('file.hdr file.img', '-extensions fi',  ''),
+    ]
+
+    capture = CaptureStdout()
+
+    for to_create, args, expected in tests:
+        with testdir(to_create.split()) as td:
+
+            capture.reset()
+
+            with capture:
+                assert imglob.main(args.split()) == 0
+
+            assert capture.stdout.strip().split() == expected.split()
+
+
+def test_imglob_script_shouldFail():
+
+    capture = CaptureStdout()
+
+    with capture:
+        assert imglob.main([]) != 0
+
+    assert capture.stdout.strip().lower().startswith('usage:')
+
+    with capture, mock.patch('sys.argv', ['imglob']):
+        assert imglob.main() != 0
+
+    assert capture.stdout.strip().lower().startswith('usage:')
-- 
GitLab