diff --git a/.gitignore b/.gitignore index 9ff496e3428d2a19629d842d0717833b3d4a08f1..e0ab10ba31fde3e4e91541a077fd4b31a3b2b490 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /build/ + /example/data/ \ No newline at end of file diff --git a/rq_controller/common/io/writer.py b/rq_controller/common/io/writer.py index be86283acb84da1848a374ea17062636b51a13cb..f9475c382156f875f56cb9093a9e83a24eab8c25 100644 --- a/rq_controller/common/io/writer.py +++ b/rq_controller/common/io/writer.py @@ -29,7 +29,8 @@ class BaseDataWriter(): def write_region_of_intrest(self, save_path: Path, region_of_intrest: PyRegionOfIntrest): raise NotImplementedError - def write_volume(save_path: Path, region_of_intrest: PyRegionOfIntrest): + + def write_volume(self, save_path: Path, volume: PyVolume): raise NotImplementedError() def get_next_projection_save_path(self, save_folder: Path) -> Path: diff --git a/test/__pycache__/test_base_loader.cpython-38-pytest-8.2.2.pyc b/test/__pycache__/test_base_loader.cpython-38-pytest-8.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..279c0db1aec0f0f5b456424894890499d32a6041 Binary files /dev/null and b/test/__pycache__/test_base_loader.cpython-38-pytest-8.2.2.pyc differ diff --git a/test/__pycache__/test_base_writer.cpython-38-pytest-8.2.2.pyc b/test/__pycache__/test_base_writer.cpython-38-pytest-8.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29e343a89d1a629bacda3ebb8b0f24f419a5fc0e Binary files /dev/null and b/test/__pycache__/test_base_writer.cpython-38-pytest-8.2.2.pyc differ diff --git a/test/__pycache__/test_rq_json_loader.cpython-38-pytest-8.2.2.pyc b/test/__pycache__/test_rq_json_loader.cpython-38-pytest-8.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..08c125f59602b7c18da451bf09f26e6439e0abfd Binary files /dev/null and b/test/__pycache__/test_rq_json_loader.cpython-38-pytest-8.2.2.pyc differ diff --git a/test/test_base_loader.py b/test/test_base_loader.py new file mode 100644 index 0000000000000000000000000000000000000000..eb1c071d7ddd30b4e84083f32e5dd780461146e0 --- /dev/null +++ b/test/test_base_loader.py @@ -0,0 +1,34 @@ +import pytest +from rq_controller.common.io.loader import BaseDataLoader +from pathlib import Path + +@pytest.fixture +def base_data_loader(): + return BaseDataLoader( + porjection_geometry_suffix="geometry_suffix", + projection_suffix="projection_suffix", + region_of_intrest_suffix="roi_suffix", + volume_suffix="volume_suffix" + ) + +def test_initialization(base_data_loader: BaseDataLoader): + assert base_data_loader.porjection_geometry_suffix == "geometry_suffix" + assert base_data_loader.projection_suffix == "projection_suffix" + assert base_data_loader.region_of_intrest_suffix == "roi_suffix" + assert base_data_loader.volume_suffix == "volume_suffix" + +def test_load_projection_geometry_not_implemented(base_data_loader: BaseDataLoader): + with pytest.raises(NotImplementedError): + base_data_loader.load_projection_geometry(Path("/fake/path")) + +def test_load_projection_not_implemented(base_data_loader: BaseDataLoader): + with pytest.raises(NotImplementedError): + base_data_loader.load_projection(Path("/fake/path")) + +def test_load_region_of_intrest_not_implemented(base_data_loader: BaseDataLoader): + with pytest.raises(NotImplementedError): + base_data_loader.load_region_of_intrest(Path("/fake/path")) + +def test_load_volume_not_implemented(base_data_loader: BaseDataLoader): + with pytest.raises(NotImplementedError): + base_data_loader.load_volume(Path("/fake/path")) \ No newline at end of file diff --git a/test/test_base_writer.py b/test/test_base_writer.py new file mode 100644 index 0000000000000000000000000000000000000000..3d41a2d95c8b45bda06cfa681c1dbc0286420aad --- /dev/null +++ b/test/test_base_writer.py @@ -0,0 +1,91 @@ +import pytest +from pathlib import Path +from rq_controller.common import PyProjection, PyProjectionGeometry, PyRegionOfIntrest, PyVolume +from rq_controller.common.io.writer import BaseDataWriter + +@pytest.fixture +def base_data_writer(): + return BaseDataWriter( + porjection_geometry_suffix=".geom", + projection_suffix=".proj", + region_of_intrest_suffix=".roi", + volume_suffix=".vol" + ) + +def test_initialization(base_data_writer): + assert base_data_writer.porjection_geometry_suffix == ".geom" + assert base_data_writer.projection_suffix == ".proj" + assert base_data_writer.region_of_intrest_suffix == ".roi" + assert base_data_writer.volume_suffix == ".vol" + +def test_write_projection_geometry_not_implemented(base_data_writer): + with pytest.raises(NotImplementedError): + base_data_writer.write_projection_geometry(Path("/fake/path"), PyProjectionGeometry.dummy()) + +def test_write_projection_not_implemented(base_data_writer): + with pytest.raises(NotImplementedError): + base_data_writer.write_projection(Path("/fake/path"), PyProjection.dummy()) + +def test_write_region_of_intrest_not_implemented(base_data_writer): + with pytest.raises(NotImplementedError): + base_data_writer.write_region_of_intrest(Path("/fake/path"), PyRegionOfIntrest.dummy()) + +def test_write_volume_not_implemented(base_data_writer): + with pytest.raises(NotImplementedError): + base_data_writer.write_volume(Path("/fake/path"), PyVolume.dummy()) + +def test_get_next_projection_save_path(base_data_writer, tmp_path): + (tmp_path / "projection_00001.proj").touch() + expected_path = tmp_path / "projection_00002.proj" + assert base_data_writer.get_next_projection_save_path(tmp_path) == expected_path + +def test_get_projection_save_path_i(base_data_writer, tmp_path): + expected_path = tmp_path / "projection_00005.proj" + assert base_data_writer.get_projection_save_path_i(tmp_path, 5) == expected_path + +def test_get_next_projection_geometry_save_path(base_data_writer, tmp_path): + (tmp_path / "geometry_00001.geom").touch() + expected_path = tmp_path / "geometry_00002.geom" + assert base_data_writer.get_next_projection_geometry_save_path(tmp_path) == expected_path + +def test_get_projection_geometry_save_path_i(base_data_writer, tmp_path): + expected_path = tmp_path / "geometry_00005.geom" + assert base_data_writer.get_projection_geometry_save_path_i(tmp_path, 5) == expected_path + +def test_get_next_region_of_intrest_save_path(base_data_writer, tmp_path): + (tmp_path / "roi_00001.roi").touch() + expected_path = tmp_path / "roi_00002.roi" + assert base_data_writer.get_next_region_of_intrest_save_path(tmp_path) == expected_path + +def test_get_region_of_intrest_save_path_i(base_data_writer, tmp_path): + expected_path = tmp_path / "roi_00005.roi" + assert base_data_writer.get_region_of_intrest_save_path_i(tmp_path, 5) == expected_path + +def test_get_next_volume_save_path(base_data_writer, tmp_path): + (tmp_path / "volume_00001.vol").touch() + expected_path = tmp_path / "volume_00002.vol" + assert base_data_writer.get_next_volume_save_path(tmp_path) == expected_path + +def test_get_volume_save_path_i(base_data_writer, tmp_path): + expected_path = tmp_path / "volume_00005.vol" + assert base_data_writer.get_volume_save_path_i(tmp_path, 5) == expected_path + +def test_number_of_projection_geometries(base_data_writer, tmp_path): + (tmp_path / "geometry_00001.geom").touch() + (tmp_path / "geometry_00002.geom").touch() + assert base_data_writer.number_of_projection_geometries(tmp_path) == 2 + +def test_number_of_projections(base_data_writer, tmp_path): + (tmp_path / "projection_00001.proj").touch() + (tmp_path / "projection_00002.proj").touch() + assert base_data_writer.number_of_projections(tmp_path) == 2 + +def test_number_of_region_of_intrests(base_data_writer, tmp_path): + (tmp_path / "roi_00001.roi").touch() + (tmp_path / "roi_00002.roi").touch() + assert base_data_writer.number_of_region_of_intrests(tmp_path) == 2 + +def test_number_of_volumes(base_data_writer, tmp_path): + (tmp_path / "volume_00001.vol").touch() + (tmp_path / "volume_00002.vol").touch() + assert base_data_writer.number_of_volumes(tmp_path) == 2 \ No newline at end of file