From bb5d2df9b3975dbfe9d5a46c8264af4adc353e16 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauldmccarthy@gmail.com> Date: Fri, 31 Jan 2025 12:53:19 +0000 Subject: [PATCH] TEST: Tests are useful it turns out. Use pyfeeds.common.tempdir instead of pyfeeds.tests.tempdir --- pyfeeds/tests/__init__.py | 13 ---- pyfeeds/tests/test_config.py | 2 +- pyfeeds/tests/test_evaluate.py | 105 ++++++++++++++++++++++++++++++++- pyfeeds/tests/test_hashing.py | 3 +- pyfeeds/tests/test_testing.py | 3 +- 5 files changed, 109 insertions(+), 17 deletions(-) diff --git a/pyfeeds/tests/__init__.py b/pyfeeds/tests/__init__.py index 7feda33..a3ec65b 100644 --- a/pyfeeds/tests/__init__.py +++ b/pyfeeds/tests/__init__.py @@ -9,8 +9,6 @@ import os import sys import os.path as op -import contextlib -import tempfile from io import StringIO @@ -61,17 +59,6 @@ class CaptureStdout(object): return self.__mock_stderr.read() -@contextlib.contextmanager -def tempdir(): - prevdir = os.getcwd() - with tempfile.TemporaryDirectory() as td: - try: - os.chdir(td) - yield td - finally: - os.chdir(prevdir) - - def makepaths(paths): for path in paths: dirname = op.dirname(path) diff --git a/pyfeeds/tests/test_config.py b/pyfeeds/tests/test_config.py index 647201f..02811dc 100644 --- a/pyfeeds/tests/test_config.py +++ b/pyfeeds/tests/test_config.py @@ -13,7 +13,7 @@ from unittest import mock import pyfeeds.main as main -from pyfeeds.tests import tempdir +from pyfeeds.common import tempdir def test_loadPyfeedsConfig(): diff --git a/pyfeeds/tests/test_evaluate.py b/pyfeeds/tests/test_evaluate.py index 4c9b4a0..98ebaf9 100644 --- a/pyfeeds/tests/test_evaluate.py +++ b/pyfeeds/tests/test_evaluate.py @@ -11,9 +11,10 @@ import os.path as op import numpy as np import nibabel as nib -from . import tempdir, makepaths, maketest, makepyfeeds, CaptureStdout +from . import makepaths, maketest, makepyfeeds, CaptureStdout from pyfeeds import testing, evaluate +from pyfeeds.common import tempdir def test_evaluateTestAgainstBenchmark(): @@ -79,6 +80,9 @@ def test_evalVectorImage(): assert evaluate.evalVectorImage(fname1, fname1, pyf=pyf) == 0 assert evaluate.evalVectorImage(fname2, fname2, pyf=pyf) == 0 assert evaluate.evalVectorImage(fname1, fname2, pyf=pyf) != 0 + assert evaluate.evalVectorImage(fname1, fname1) == 0 + assert evaluate.evalVectorImage(fname2, fname2) == 0 + assert evaluate.evalVectorImage(fname1, fname2) != 0 def test_evalImage(): @@ -98,3 +102,102 @@ def test_evalImage(): assert evaluate.evalImage(fname1, fname1, pyf=pyf) == 0 assert evaluate.evalImage(fname2, fname2, pyf=pyf) == 0 assert evaluate.evalImage(fname1, fname2, pyf=pyf) != 0 + assert evaluate.evalImage(fname1, fname1) == 0 + assert evaluate.evalImage(fname2, fname2) == 0 + assert evaluate.evalImage(fname1, fname2) != 0 + + +def test_evalHeader(): + + arr1 = -1 + 2 * np.random.random((10, 10, 10, 10)) + arr2 = -1 + 2 * np.random.random((10, 10, 10, 10)) + arr3 = -1 + 2 * np.random.random((10, 10, 10, 20)) + arr4 = -1 + 2 * np.random.random(( 5, 5, 5, 20)) + + with tempdir(): + + pyf = makepyfeeds() + fname1 = 'image1.nii.gz' + fname2 = 'image2.nii.gz' + fname3 = 'image3.nii.gz' + fname4 = 'image4.nii.gz' + + nib.Nifti1Image(arr1, np.eye(4)).to_filename(fname1) + nib.Nifti1Image(arr2, np.eye(4)).to_filename(fname2) + nib.Nifti1Image(arr3, np.eye(4)).to_filename(fname3) + nib.Nifti1Image(arr4, np.eye(4)).to_filename(fname4) + + assert evaluate.evalHeader(fname1, fname1, pyf=pyf) == 0 + assert evaluate.evalHeader(fname2, fname2, pyf=pyf) == 0 + assert evaluate.evalHeader(fname3, fname3, pyf=pyf) == 0 + assert evaluate.evalHeader(fname4, fname4, pyf=pyf) == 0 + assert evaluate.evalHeader(fname1, fname1) == 0 + assert evaluate.evalHeader(fname2, fname2) == 0 + assert evaluate.evalHeader(fname3, fname3) == 0 + assert evaluate.evalHeader(fname4, fname4) == 0 + + assert evaluate.evalHeader(fname1, fname2) == 0 + assert evaluate.evalHeader(fname1, fname3) != 0 + assert evaluate.evalHeader(fname1, fname4) != 0 + assert evaluate.evalHeader(fname1, fname3, ndims=3) == 0 + assert evaluate.evalHeader(fname3, fname4) != 0 + assert evaluate.evalHeader(fname3, fname4, ndims=3) != 0 + + assert evaluate.evalHeaderRestrictDims(fname1, fname2, pyf=pyf) == 0 + assert evaluate.evalHeaderRestrictDims(fname1, fname3, pyf=pyf) != 0 + assert evaluate.evalHeaderRestrictDims(fname1, fname2) == 0 + assert evaluate.evalHeaderRestrictDims(fname1, fname3) != 0 + + +def test_evalImageMaxDiff(): + + arr1 = np.zeros((10, 10, 10)) + arr2 = np.zeros((10, 10, 10)) + + arr1[0, 0, 0] = 100 + + with tempdir(): + + pyf = makepyfeeds() + fname1 = 'image1.nii.gz' + fname2 = 'image2.nii.gz' + nib.Nifti1Image(arr1, np.eye(4)).to_filename(fname1) + nib.Nifti1Image(arr2, np.eye(4)).to_filename(fname2) + + assert evaluate.evalImageMaxDiff(fname1, fname1, pyf=pyf) == 0 + assert evaluate.evalImageMaxDiff(fname1, fname1) == 0 + assert evaluate.evalImageMaxDiff(fname1, fname2) == 100 + +def test_evalNumericalText(): + + arr1 = np.random.random(100) + arr2 = np.random.random(100) * 4 + + with tempdir(): + + pyf = makepyfeeds() + fname1 = 'data1.txt' + fname2 = 'data2.txt' + np.savetxt(fname1, arr1) + np.savetxt(fname2, arr2) + + assert evaluate.evalNumericalText(fname1, fname1, pyf=pyf) == 0 + assert evaluate.evalNumericalText(fname1, fname1) == 0 + assert evaluate.evalNumericalText(fname1, fname2) != 0 + +def test_evalMD5(): + + arr1 = np.random.random(100) + arr2 = np.random.random(100) * 4 + + with tempdir(): + + pyf = makepyfeeds() + fname1 = 'data1.txt' + fname2 = 'data2.txt' + np.savetxt(fname1, arr1) + np.savetxt(fname2, arr2) + + assert evaluate.evalMD5(fname1, fname1, pyf=pyf) == 0 + assert evaluate.evalMD5(fname1, fname1) == 0 + assert evaluate.evalMD5(fname1, fname2) != 0 diff --git a/pyfeeds/tests/test_hashing.py b/pyfeeds/tests/test_hashing.py index bb303a7..808cab8 100644 --- a/pyfeeds/tests/test_hashing.py +++ b/pyfeeds/tests/test_hashing.py @@ -13,8 +13,9 @@ import os.path as op import time from pyfeeds import hashing, testing +from pyfeeds.common import tempdir -from . import CaptureStdout, makepyfeeds, maketest, makepaths, tempdir +from . import CaptureStdout, makepyfeeds, maketest, makepaths def test_genHashes(): diff --git a/pyfeeds/tests/test_testing.py b/pyfeeds/tests/test_testing.py index 3dcadbb..2761aa0 100644 --- a/pyfeeds/tests/test_testing.py +++ b/pyfeeds/tests/test_testing.py @@ -10,9 +10,10 @@ import os import datetime import os.path as op -from . import tempdir, makepaths, maketest, makepyfeeds, CaptureStdout +from . import makepaths, maketest, makepyfeeds, CaptureStdout from pyfeeds import testing +from pyfeeds.common import tempdir def test_findTestDirs(): -- GitLab