From 84e0222db1d820f23f632a712f2e5972eb17bc2c Mon Sep 17 00:00:00 2001 From: keviny2 Date: Tue, 1 Apr 2025 16:46:03 -0700 Subject: [PATCH 1/3] Split test_img_data_methods into function-specific test suites --- tests/test_add_img.py | 27 +++++ tests/test_get_img.py | 95 +++++++++++++++ ...img_data_methods.py => test_remove_img.py} | 111 ------------------ 3 files changed, 122 insertions(+), 111 deletions(-) create mode 100644 tests/test_add_img.py create mode 100644 tests/test_get_img.py rename tests/{test_img_data_methods.py => test_remove_img.py} (56%) diff --git a/tests/test_add_img.py b/tests/test_add_img.py new file mode 100644 index 0000000..afcb95d --- /dev/null +++ b/tests/test_add_img.py @@ -0,0 +1,27 @@ +import pytest + +__author__ = "keviny2" +__copyright__ = "keviny2" +__license__ = "MIT" + + +def test_add_img(spe): + tspe = spe.add_img( + image_source="tests/images/sample_image4.png", + scale_factor=1, + sample_id="sample_2", + image_id="unsplash", + ) + + assert tspe.img_data.shape[0] == spe.img_data.shape[0] + 1 + + +def test_add_img_already_exists(spe): + img_data = spe.img_data + with pytest.raises(ValueError): + spe.add_img( + image_source="tests/images/sample_image4.png", + scale_factor=1, + sample_id=img_data["sample_id"][0], + image_id=img_data["image_id"][0], + ) diff --git a/tests/test_get_img.py b/tests/test_get_img.py new file mode 100644 index 0000000..2c66405 --- /dev/null +++ b/tests/test_get_img.py @@ -0,0 +1,95 @@ +import pytest +from copy import deepcopy +import numpy as np +from spatialexperiment.SpatialImage import VirtualSpatialImage + +__author__ = "keviny2" +__copyright__ = "keviny2" +__license__ = "MIT" + + +def test_get_img_no_img_data(spe): + tspe = deepcopy(spe) + + tspe.img_data = None + assert not tspe.get_img() + + +def test_get_img_no_matches(spe): + with pytest.raises(ValueError): + images = spe.get_img(sample_id="foo", image_id="foo") + + +def test_get_img_both_str(spe): + res = spe.get_img(sample_id="sample_1", image_id="dice") + images = spe.img_data[np.array(spe.img_data["sample_id"]) == "sample_1",] + images = images[np.array(images["image_id"]) == "dice",]["data"][0] + + assert isinstance(res, VirtualSpatialImage) + assert res == images + + +def test_get_img_both_true(spe): + res = spe.get_img(sample_id=True, image_id=True) + images = spe.img_data["data"] + + assert isinstance(res, list) + assert res == images + + +def test_get_img_both_none(spe): + res = spe.get_img(sample_id=None, image_id=None) + image = spe.img_data[0,]["data"][0] + + assert isinstance(res, VirtualSpatialImage) + assert res == image + + +def test_get_img_sample_str_image_true(spe): + res = spe.get_img(sample_id="sample_1", image_id=True) + images = spe.img_data[np.array(spe.img_data["sample_id"]) == "sample_1",]["data"] + + assert isinstance(res, list) + assert res == images + + +def test_get_img_sample_true_image_str(spe): + res = spe.get_img(sample_id=True, image_id="desert") + images = spe.img_data[np.array(spe.img_data["image_id"]) == "desert",]["data"][0] + + assert isinstance(res, VirtualSpatialImage) + assert res == images + + +def test_get_img_sample_str_image_none(spe): + res = spe.get_img(sample_id="sample_1", image_id=None) + images = spe.img_data[np.array(spe.img_data["sample_id"]) == "sample_1",]["data"][0] + + assert isinstance(res, VirtualSpatialImage) + assert res == images + + +def test_get_img_sample_none_image_str(spe): + res = spe.get_img(sample_id=None, image_id="aurora") + images = spe.img_data[np.array(spe.img_data["image_id"]) == "aurora",]["data"][0] + + assert isinstance(res, VirtualSpatialImage) + assert res == images + + +def test_get_img_sample_true_image_none(spe): + res = spe.get_img(sample_id=True, image_id=None) + idxs = [spe.img_data["sample_id"].index(x) for x in set(spe.img_data["sample_id"])] + images = spe.img_data[idxs,]["data"] + + assert isinstance(res, list) and all(isinstance(item, VirtualSpatialImage) for item in res) + assert set(res) == set(images) + + +def test_get_img_sample_none_image_true(spe): + res = spe.get_img(sample_id=None, image_id=True) + first_sample_id = spe.img_data["sample_id"][0] + images = spe.img_data[np.array(spe.img_data["sample_id"]) == first_sample_id,]["data"] + + assert isinstance(res, list) and all(isinstance(item, VirtualSpatialImage) for item in res) + assert set(res) == set(images) diff --git a/tests/test_img_data_methods.py b/tests/test_remove_img.py similarity index 56% rename from tests/test_img_data_methods.py rename to tests/test_remove_img.py index 2f690e8..53b52d5 100644 --- a/tests/test_img_data_methods.py +++ b/tests/test_remove_img.py @@ -1,122 +1,11 @@ import pytest from copy import deepcopy -import numpy as np -from spatialexperiment.SpatialImage import VirtualSpatialImage __author__ = "keviny2" __copyright__ = "keviny2" __license__ = "MIT" -def test_get_img_no_img_data(spe): - tspe = deepcopy(spe) - - tspe.img_data = None - assert not tspe.get_img() - - -def test_get_img_no_matches(spe): - with pytest.raises(ValueError): - images = spe.get_img(sample_id="foo", image_id="foo") - - -def test_get_img_both_str(spe): - res = spe.get_img(sample_id="sample_1", image_id="dice") - images = spe.img_data[np.array(spe.img_data["sample_id"]) == "sample_1",] - images = images[np.array(images["image_id"]) == "dice",]["data"][0] - - assert isinstance(res, VirtualSpatialImage) - assert res == images - - -def test_get_img_both_true(spe): - res = spe.get_img(sample_id=True, image_id=True) - images = spe.img_data["data"] - - assert isinstance(res, list) - assert res == images - - -def test_get_img_both_none(spe): - res = spe.get_img(sample_id=None, image_id=None) - image = spe.img_data[0,]["data"][0] - - assert isinstance(res, VirtualSpatialImage) - assert res == image - - -def test_get_img_sample_str_image_true(spe): - res = spe.get_img(sample_id="sample_1", image_id=True) - images = spe.img_data[np.array(spe.img_data["sample_id"]) == "sample_1",]["data"] - - assert isinstance(res, list) - assert res == images - - -def test_get_img_sample_true_image_str(spe): - res = spe.get_img(sample_id=True, image_id="desert") - images = spe.img_data[np.array(spe.img_data["image_id"]) == "desert",]["data"][0] - - assert isinstance(res, VirtualSpatialImage) - assert res == images - - -def test_get_img_sample_str_image_none(spe): - res = spe.get_img(sample_id="sample_1", image_id=None) - images = spe.img_data[np.array(spe.img_data["sample_id"]) == "sample_1",]["data"][0] - - assert isinstance(res, VirtualSpatialImage) - assert res == images - - -def test_get_img_sample_none_image_str(spe): - res = spe.get_img(sample_id=None, image_id="aurora") - images = spe.img_data[np.array(spe.img_data["image_id"]) == "aurora",]["data"][0] - - assert isinstance(res, VirtualSpatialImage) - assert res == images - - -def test_get_img_sample_true_image_none(spe): - res = spe.get_img(sample_id=True, image_id=None) - idxs = [spe.img_data["sample_id"].index(x) for x in set(spe.img_data["sample_id"])] - images = spe.img_data[idxs,]["data"] - - assert isinstance(res, list) and all(isinstance(item, VirtualSpatialImage) for item in res) - assert set(res) == set(images) - - -def test_get_img_sample_none_image_true(spe): - res = spe.get_img(sample_id=None, image_id=True) - first_sample_id = spe.img_data["sample_id"][0] - images = spe.img_data[np.array(spe.img_data["sample_id"]) == first_sample_id,]["data"] - - assert isinstance(res, list) and all(isinstance(item, VirtualSpatialImage) for item in res) - assert set(res) == set(images) - - -def test_add_img(spe): - tspe = spe.add_img( - image_source="tests/images/sample_image4.png", - scale_factor=1, - sample_id="sample_2", - image_id="unsplash", - ) - - assert tspe.img_data.shape[0] == spe.img_data.shape[0] + 1 - - -def test_add_img_already_exists(spe): - img_data = spe.img_data - with pytest.raises(ValueError): - spe.add_img( - image_source="tests/images/sample_image4.png", - scale_factor=1, - sample_id=img_data["sample_id"][0], - image_id=img_data["image_id"][0], - ) - - def test_remove_img_no_img_data(spe): tspe = deepcopy(spe) tspe.img_data = None From c214c2590e8721a88674690d49546d0de9d43873 Mon Sep 17 00:00:00 2001 From: keviny2 Date: Tue, 1 Apr 2025 17:16:18 -0700 Subject: [PATCH 2/3] Add tests for add_img --- tests/test_add_img.py | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tests/test_add_img.py b/tests/test_add_img.py index afcb95d..dd898ea 100644 --- a/tests/test_add_img.py +++ b/tests/test_add_img.py @@ -15,6 +15,9 @@ def test_add_img(spe): assert tspe.img_data.shape[0] == spe.img_data.shape[0] + 1 + added_img = tspe.get_img(sample_id="sample_2", image_id="unsplash") + assert added_img is not None + def test_add_img_already_exists(spe): img_data = spe.img_data @@ -25,3 +28,44 @@ def test_add_img_already_exists(spe): sample_id=img_data["sample_id"][0], image_id=img_data["image_id"][0], ) + + +def test_add_img_in_place(spe): + original_count = spe.img_data.shape[0] + original_id = id(spe) + + result = spe.add_img( + image_source="tests/images/sample_image4.png", + scale_factor=1.5, + sample_id="sample_3", + image_id="new_image", + in_place=True + ) + + # Check if in-place + assert id(result) == original_id + assert spe.img_data.shape[0] == original_count + 1 + + +def test_add_img_not_in_place(spe): + result = spe.add_img( + image_source="tests/images/sample_image4.png", + scale_factor=2, + sample_id="sample_4", + image_id="another_image" + ) + + # Check if not in-place + assert id(result) != id(spe) + assert spe.img_data.shape[0] == spe.img_data.shape[0] + assert result.img_data.shape[0] == spe.img_data.shape[0] + 1 + + +def test_add_img_invalid_source(spe): + with pytest.raises(FileNotFoundError): + spe.add_img( + image_source="non_existent_image.png", + scale_factor=1, + sample_id="sample_6", + image_id="invalid_source" + ) \ No newline at end of file From 99ec714f1f7b75283c3146026f0f7992fe627aae Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 00:17:11 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/test_add_img.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_add_img.py b/tests/test_add_img.py index dd898ea..bd3b2a5 100644 --- a/tests/test_add_img.py +++ b/tests/test_add_img.py @@ -33,7 +33,7 @@ def test_add_img_already_exists(spe): def test_add_img_in_place(spe): original_count = spe.img_data.shape[0] original_id = id(spe) - + result = spe.add_img( image_source="tests/images/sample_image4.png", scale_factor=1.5, @@ -41,7 +41,7 @@ def test_add_img_in_place(spe): image_id="new_image", in_place=True ) - + # Check if in-place assert id(result) == original_id assert spe.img_data.shape[0] == original_count + 1 @@ -54,7 +54,7 @@ def test_add_img_not_in_place(spe): sample_id="sample_4", image_id="another_image" ) - + # Check if not in-place assert id(result) != id(spe) assert spe.img_data.shape[0] == spe.img_data.shape[0] @@ -68,4 +68,4 @@ def test_add_img_invalid_source(spe): scale_factor=1, sample_id="sample_6", image_id="invalid_source" - ) \ No newline at end of file + )