diff --git a/tests/test_add_img.py b/tests/test_add_img.py new file mode 100644 index 0000000..bd3b2a5 --- /dev/null +++ b/tests/test_add_img.py @@ -0,0 +1,71 @@ +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 + + 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 + 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_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" + ) 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