From 0b4f5c9139bca7bb04c904f23dfd48e926ee5775 Mon Sep 17 00:00:00 2001
From: swittl <simon.wittl@th-deg.de>
Date: Fri, 12 Jul 2024 08:04:15 +0200
Subject: [PATCH] added more test

---
 .gitignore                                    |   1 +
 rq_controller/common/io/writer.py             |   3 +-
 ...st_base_loader.cpython-38-pytest-8.2.2.pyc | Bin 0 -> 2839 bytes
 ...st_base_writer.cpython-38-pytest-8.2.2.pyc | Bin 0 -> 10618 bytes
 ...rq_json_loader.cpython-38-pytest-8.2.2.pyc | Bin 0 -> 7337 bytes
 test/test_base_loader.py                      |  34 +++++++
 test/test_base_writer.py                      |  91 ++++++++++++++++++
 7 files changed, 128 insertions(+), 1 deletion(-)
 create mode 100644 test/__pycache__/test_base_loader.cpython-38-pytest-8.2.2.pyc
 create mode 100644 test/__pycache__/test_base_writer.cpython-38-pytest-8.2.2.pyc
 create mode 100644 test/__pycache__/test_rq_json_loader.cpython-38-pytest-8.2.2.pyc
 create mode 100644 test/test_base_loader.py
 create mode 100644 test/test_base_writer.py

diff --git a/.gitignore b/.gitignore
index 9ff496e..e0ab10b 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 be86283..f9475c3 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
GIT binary patch
literal 2839
zcmcIm&u`pB6rQoYUa$8@lBPrfArzp68pIX~p->SN3LJ{i3R)r1Dw5^w%%)E4_3~!6
zX~KpB?G+JmL_K7W`A;}-<}g>p0f{q*iUV(Ey<~UO%_+6z=lSM&-uvG3yk~z^t@;Fy
zKc6{l|5_mA4-Li-8^JnW;%5|$Fq)7iHFqnuEka4^Gz)a7ahon`tfZKFP0!5PNh$T4
zJ|*1UE;EM}9+C&NS>YaYA5m6h-b1HZ%~6T@h-x`1vkIcQ993Bj(R_~P*gT>IM(>bd
z;V<Mx8pl-CZbpKC63OWEEMgo2s+=z(dAFtY<A;mjW4y#X3W*Uhi`kmnj}F>%8)|Ng
zXDOGk7m8lH9p6_AUC6e1OU7AeH047UkH*z|S<*{+4g*I$*Uez`{FE)w-qkYjEp04o
zhjB*&7cyTA9;(4YaZI4B$67pIYu(sj{N4t98}4SX(@wJ84FN5UTNxV2l7z#CL_0==
zo0y3(F=?oG_td<>3{#U&;)^Dtf`V8U&Ch?KiujnCTZ?LCerU=?yiC$=Ah|x-CI^(!
z1FKK_){b>x_igdLq(>IB`gWT#ThF(xfx{eWA2|cE<BE0E7y4vC;WHe$depH{ug7#i
z&D|PMR(NDDkpqXhtk`#AisOPTqSosd2J`{_0XLt6-tn^0KiMuJ6K|Z!Ar(G8KjKn)
z0+-)VKjiYe@q1oeeB|O!artG8OZhYxWV<n9b4a0mu6)YKr!v9E60eQ%sXmd<-(!6K
zIX^y(V0qOVpf_JYA6si{0o}iO`AT>1S|I%I^1;g5iXOcgi2Cd*@()(lhR>}A!fe>U
zRyMBE;+ht#`?W|24$@e=9tb^o-BcfXeg7=4)3rY7Ocw%LSU<zUtm2+Dq$?c_t)5|M
zqOVM>4k}Q>^~zuG?&-1*BTx%rD@u|Oco$k(+Kqs#3aZ1+UYy9dBb1wD_=Hf)p}3p%
z5@sF^w~}l#O2ST*a#adN)aKfPs(obAhh6GZfDF`P*v=r0WXSJ#lc*EvW@yq0`ukz}
zR^Xafp~~9pF#B(fgLlTk+e0uk`tCS*@1*g8?on#dL>PBs8AnOHZ(P?<A=Xh4>S90e
z@M@3>sgX*K-BbAXlzxceMYJ)|?sV(Z$u;fn3JxSWq7qxvPZue+z9U;Y3>(paQt~xf
zC0~-;<Qx3{-66+TW8c5pj&}IfE`E4|f^vs%N4XHif(y0S$mFfGoA8u(BxfeG&1K!F
z!?91y=#v2sItLx;bVlAV8JV>%>|`>GPuyHY3qso>v_jz(yq{0J@DiE|3h*-C;F1=X
zQ8eeKc+C#u(i6j&V!w<wPuRbT=&7<_GVD*4@a!O7KMCU0s_8fJ{6s8zZ#~sm$|ja!
z7nvQv%1Hou!<l*mD-)~(M8O5+joJz<;e>iN9B%dcu<o%r)Pe6pEU~HlKc$NK9Ox}+
z_D%DJiGP?ncCHlH##vo+=K!|0UexuJ#G57vRm6WX*#mC6jj3O=sX^}z&`AZ&aja&{
kkCbU8-Un&MdI|qf7rD^PJ#v9~SQiz`p}tphYmPqu1KoVg;{X5v

literal 0
HcmV?d00001

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
GIT binary patch
literal 10618
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

literal 0
HcmV?d00001

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
GIT binary patch
literal 7337
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

literal 0
HcmV?d00001

diff --git a/test/test_base_loader.py b/test/test_base_loader.py
new file mode 100644
index 0000000..eb1c071
--- /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 0000000..3d41a2d
--- /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
-- 
GitLab