From 222cdae2f0e2eb1fb199aa2861aa07528f8868a3 Mon Sep 17 00:00:00 2001
From: Zhichao Zhang <zhichao.zhang@stud.tu-darmstadt.de>
Date: Mon, 5 Sep 2022 21:06:07 +0200
Subject: [PATCH] change import structure in test files and adjust it to new
 project structure

---
 Tests/test_dataset.py       | 51 ++++++++++++--------
 Tests/test_dataset_image.py | 90 +++++++++++++++++++++--------------
 Tests/test_dataset_video.py | 68 +++++++++++++++++----------
 Tests/test_instrument.py    | 55 +++++++++++++---------
 Tests/test_model.py         | 59 +++++++++++++----------
 Tests/test_parameter.py     | 51 +++++++++++---------
 Tests/test_pipeline.py      | 82 ++++++++++++++++++--------------
 Tests/test_run.py           | 93 +++++++++++++++++++++----------------
 8 files changed, 330 insertions(+), 219 deletions(-)

diff --git a/Tests/test_dataset.py b/Tests/test_dataset.py
index 9953e65..689f742 100644
--- a/Tests/test_dataset.py
+++ b/Tests/test_dataset.py
@@ -1,40 +1,53 @@
 from pathlib import Path
+
 import numpy as np
-from components import *
+from pykkn.dataset import Dataset
+
+test_result_path = Path("./test_result")
+if not test_result_path.exists():
+    test_result_path.mkdir()
 
-dataset = Dataset('dataset1')
+dataset = Dataset("dataset1")
 dataset.data = np.double(1)
-dataset.attrs['samplerate'] = 1000
-dataset.attrs['timestamp'] = '2022-06-12 10:39:11'
-dataset.set_storage_path('tests/test_results/test_dataset.h5')
+dataset.attrs["samplerate"] = 1000
+dataset.attrs["timestamp"] = "2022-06-12 10:39:11"
+dataset.set_storage_path(test_result_path / "test_dataset.h5")
 dataset.store()
-dataset.store(format='json')
+dataset.store(format="json")
+
 
 def test_name():
-    assert dataset.name == 'dataset1'
+    assert dataset.name == "dataset1"
+
 
 def test_data():
     assert dataset.data == 1
-    
-def test_data_type():  
+
+
+def test_data_type():
     assert np.issubdtype(dataset.data.dtype, float)
 
+
 def test_samplerate_value():
-    assert dataset.attrs['samplerate'] == 1000
-    
+    assert dataset.attrs["samplerate"] == 1000
+
+
 def test_samplerate_type():
-    assert isinstance(dataset.attrs['samplerate'], float)
+    assert isinstance(dataset.attrs["samplerate"], float)
+
 
 def test_timestamp():
-    assert dataset.attrs['timestamp'] == '2022-06-12 10:39:11'
+    assert dataset.attrs["timestamp"] == "2022-06-12 10:39:11"
+
 
 def test_other_attributes():
-    assert dataset.storage_path == Path('test/test_ut_ds.h5')
+    assert dataset.storage_path == str(Path(test_result_path
+                                            / "test_dataset.json"))
     assert dataset.is_dataset is True
-    assert dataset.attrs['kkn_CLASS'] == 'DATASET'
-    assert dataset.attrs['kkn_DATASET_SUBCLASS'] == 'TIMESERIES'
-    assert dataset.attrs['kkn_TIMESERIES_VERSION'] == '1.0'
+    assert dataset.attrs["kkn_CLASS"] == "DATASET"
+    assert dataset.attrs["kkn_DATASET_SUBCLASS"] == "TIMESERIES"
+    assert dataset.attrs["kkn_TIMESERIES_VERSION"] == "1.0"
+
 
 def test_file_exist():
-    assert dataset.storage_path.exists()
-    
\ No newline at end of file
+    assert Path(test_result_path / "test_dataset.h5").exists()
diff --git a/Tests/test_dataset_image.py b/Tests/test_dataset_image.py
index f14365d..870f595 100644
--- a/Tests/test_dataset_image.py
+++ b/Tests/test_dataset_image.py
@@ -1,52 +1,74 @@
-import numpy as np
 from pathlib import Path
-from components import *
 
-dataset = Dataset_Image('image_dataset')
-dataset.data = 'tests/test_resources/color.png'
-dataset.set_storage_path('tests/test_results/dataset_image.h5')    
+import requests
+from pykkn.dataset_image import Dataset_Image
+
+url = 'https://www.learningcontainer.com/wp-content/uploads/2020/07/sample' \
+      '-image-files-for-testing-300x300.png?ezimgfmt=rs:300x300/rscb4/ngcb' \
+      '4/notWebP'
+
+tmp_path = Path('./.tmp')
+if not tmp_path.exists():
+    tmp_path.mkdir()
+
+r = requests.get(url)
+with open(tmp_path / 'test.png', 'wb') as f:
+    f.write(r.content)
+
+test_result_path = Path('./test_result')
+if not test_result_path.exists():
+    test_result_path.mkdir()
+
+dataset = Dataset_Image("image_dataset")
+dataset.data = tmp_path / 'test.png'
+dataset.set_storage_path(test_result_path / "dataset_image.h5")
 dataset.store()
-dataset.store(format='json')
+dataset.store(format="json")
+
 
 def test_name():
-	assert dataset.name == 'image_dataset'
+    assert dataset.name == "image_dataset"
+
 
 # here for image data content, we will not check its data type
-# because in pillow lib, there are lots of classes for image, such as PngImageFile, JrpgImageFIle etc.
+# because in pillow lib, there are lots of classes for image
+# such as PngImageFile, JrpgImageFIle etc.
 # so it is too complicated to check
 # def test_data_type():
 #         assert isinstance(dataset.data, PIL.PngImagePlugin.PngImageFile)
 
 # also here we will only check necessary attributes for a dataset instance
-def test_image_attr():   
-	assert dataset.attrs['CLASS'] == np.string_('IMAGE')
-	# assert dataset.attrs['IMAGE_MINMAXRANGE'] == np.array([0, 255])
-	assert dataset.attrs['IMAGE_SUBCLASS'] == np.string_('IMAGE_TRUECOLOR')
-	# assert dataset.attrs['IMAGE_VERSION'] == np.string_('1.2')
-	# assert dataset.attrs['INTERLACE_MODE'] == np.string_('INTERLACE_PIXEL')
-	
-	assert dataset.attrs['file_name'] == 'color.png'
-	assert dataset.attrs['file_format'] == 'PNG'
-	assert dataset.attrs['image_mode'] == 'RGBA'
-	
-	assert dataset.attrs['shape'] == (508, 378, 4)
-	assert dataset.attrs['image_width'] == 378
-	assert dataset.attrs['image_height'] == 508
-	assert dataset.attrs['num_channels'] == 4
-	assert dataset.attrs['data_type'] == 'uint8'
-		
+def test_image_attr():
+    assert dataset.attrs["CLASS"] == "IMAGE"
+    # assert dataset.attrs['IMAGE_MINMAXRANGE'] == np.array([0, 255])
+    assert dataset.attrs["IMAGE_SUBCLASS"] == "IMAGE_TRUECOLOR"
+    # assert dataset.attrs['IMAGE_VERSION'] == np.string_('1.2')
+    # assert dataset.attrs['INTERLACE_MODE'] == np.string_('INTERLACE_PIXEL')
+
+    assert dataset.attrs["file_name"] == "test.png"
+    assert dataset.attrs["file_format"] == "PNG"
+    assert dataset.attrs["image_mode"] == "RGBA"
+
+    assert dataset.attrs["shape"] == (300, 300, 4)
+    assert dataset.attrs["image_width"] == 300
+    assert dataset.attrs["image_height"] == 300
+    assert dataset.attrs["num_channels"] == 4
+    assert dataset.attrs["data_type"] == "uint8"
+
 
 def test_other_attributes():
-	# With opencv as an example (Pillow would be the exact same) 
-	assert dataset.storage_path == Path('test/test_ut_img.h5')
-	assert dataset.is_dataset is True
-	assert dataset.attrs['kkn_CLASS'] == 'DATASET'
-	assert dataset.attrs['kkn_DATASET_SUBCLASS'] == 'IMAGE'
-	assert dataset.attrs['kkn_DATASET_VERSION'] == '1.0'
+    # With opencv as an example (Pillow would be the exact same)
+    assert dataset.storage_path == str(Path(
+        test_result_path / "dataset_image.json"))
+    assert dataset.is_dataset is True
+    assert dataset.attrs["kkn_CLASS"] == "DATASET"
+    assert dataset.attrs["kkn_DATASET_SUBCLASS"] == "IMAGE"
+    assert dataset.attrs["kkn_DATASET_VERSION"] == "1.0"
 
-def test_file_exist():
-	assert dataset.storage_path.exists()
 
+def test_file_exist():
+    assert Path(test_result_path / "dataset_image.h5").exists()
+    assert Path(test_result_path / "dataset_image.json").exists()
 
 
-    
\ No newline at end of file
+# TODO check using reading HDF5 file and JSON file
diff --git a/Tests/test_dataset_video.py b/Tests/test_dataset_video.py
index b96be85..e1f4c1e 100644
--- a/Tests/test_dataset_video.py
+++ b/Tests/test_dataset_video.py
@@ -1,41 +1,61 @@
 from pathlib import Path
 
-import numpy as np
-from components import *
+import requests
+from pykkn.dataset_video import Dataset_Video
 
-dataset = Dataset_Video('video_dataset_1')
-dataset.data = "tests/test_resources/file_example_MP4_1920_18MG.mp4"
-dataset.attrs['timestamp'] = '2022-06-13 11:22:11'
-dataset.set_storage_path('tests/test_results/dataset_video.h5')
+url = "http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"
+
+tmp_path = Path("./.tmp")
+if not tmp_path.exists():
+    tmp_path.mkdir()
+
+r = requests.get(url)
+with open(tmp_path / "test.mp4", "wb") as f:
+    f.write(r.content)
+
+test_result_path = Path("./test_result")
+if not test_result_path.exists():
+    test_result_path.mkdir()
+
+with open("test.mp4", "wb") as f:
+    f.write(r.content)
+
+dataset = Dataset_Video("video_dataset_1")
+dataset.data = tmp_path / "test.mp4"
+dataset.attrs["timestamp"] = "2022-06-13 11:22:11"
+dataset.set_storage_path(test_result_path / "dataset_video.h5")
 
 dataset.store()
-dataset.store(format='json')
+dataset.store(format="json")
+
 
 def test_name():
-    assert dataset.name == 'video_dataset_1'
+    assert dataset.name == "video_dataset_1"
 
-def test_data_type():
-    assert isinstance(dataset._data, np.void)
 
 def test_video_attrs():
-    assert dataset.attrs['video_fps'] == 30
-    assert dataset.attrs['video_height'] == 1080
-    assert dataset.attrs['video_length'] == '30s'
-    assert dataset.attrs['video_num_frames'] == 916
-    assert dataset.attrs['video_width'] == 1920
-    assert dataset.attrs['file_name'] == 'file_example_MP4_1920_18MG.mp4'
-    assert dataset.attrs['file_suffix'] == 'mp4'
+    assert dataset.attrs["video_fps"] == 23
+    assert dataset.attrs["video_height"] == 360
+    assert dataset.attrs["video_length"] == "62s"
+    assert dataset.attrs["video_num_frames"] == 1440
+    assert dataset.attrs["video_width"] == 640
+    assert dataset.attrs["file_name"] == "test.mp4"
+    assert dataset.attrs["file_suffix"] == "mp4"
+
 
 def test_timestamp():
-    assert dataset.attrs['timestamp'] == '2022-06-13 11:22:11'
+    assert dataset.attrs["timestamp"] == "2022-06-13 11:22:11"
+
 
 def test_other_attributes():
-    assert dataset.storage_path == Path('test/test_ut_video.h5')
+    assert dataset.storage_path == str(Path(test_result_path
+                                            / "dataset_video.json"))
     assert dataset.is_dataset is True
-    assert dataset.attrs['kkn_CLASS'] == 'DATASET'
-    assert dataset.attrs['kkn_DATASET_SUBCLASS'] == 'VIDEO'
-    assert dataset.attrs['kkn_TIMESERIES_VERSION'] == '1.0'
+    assert dataset.attrs["kkn_CLASS"] == "DATASET"
+    assert dataset.attrs["kkn_DATASET_SUBCLASS"] == "VIDEO"
+    assert dataset.attrs["kkn_TIMESERIES_VERSION"] == "1.0"
+
 
 def test_file_exist():
-    assert dataset.storage_path.exists()
-    
\ No newline at end of file
+    assert Path(test_result_path / "dataset_video.h5").exists()
+    assert Path(test_result_path / "dataset_video.json").exists()
diff --git a/Tests/test_instrument.py b/Tests/test_instrument.py
index b2b6a16..77b6148 100644
--- a/Tests/test_instrument.py
+++ b/Tests/test_instrument.py
@@ -1,41 +1,50 @@
 from pathlib import Path
 
 import pytest
-from components import *
+from pykkn.instrument import Instrument
+from pykkn.model import Model
+from pykkn.parameter import Parameter
 
-para1 = Parameter('para1')
-para1.attrs['value'] = 1
-para1.attrs['units'] = 'cm'
-para1.attrs['variable'] = '-'
-para1.attrs['origin'] = 'this'
+test_result_path = Path("./test_result")
+if not test_result_path.exists():
+    test_result_path.mkdir()
 
-para2 = Parameter('para2')
-para2.attrs['value'] = 2
-para2.attrs['units'] = 'mm'
-para2.attrs['variable'] = '-'
-para2.attrs['origin'] = 'this'
+para1 = Parameter("para1")
+para1.attrs["value"] = 1
+para1.attrs["units"] = "cm"
+para1.attrs["variable"] = "-"
+para1.attrs["origin"] = "this"
 
-model1 = Model('model1')
+para2 = Parameter("para2")
+para2.attrs["value"] = 2
+para2.attrs["units"] = "mm"
+para2.attrs["variable"] = "-"
+para2.attrs["origin"] = "this"
+
+model1 = Model("model1")
 model1.add([para1, para2])
 
-model2 = Model('model2')
+model2 = Model("model2")
 model2.add([para2, para1])
 
-instr1 = Instrument('instr1')
+instr1 = Instrument("instr1")
 instr1.add([model1, model2])
 
-instr1.set_storage_path('tests/test_results/instrument.h5')
+instr1.set_storage_path(test_result_path / "instrument.h5")
 instr1.store()
-instr1.store(format='json')
+instr1.store(format="json")
+
 
 def test_name():
-    assert instr1.name == 'instr1'
+    assert instr1.name == "instr1"
+
 
 def test_params():
     assert len(instr1.model) == 2
     assert instr1.model[0] == model1
     assert instr1.model[1] == model2
 
+
 def test_wrong_para_input():
     with pytest.raises(AssertionError):
         instr1.add(model1)
@@ -44,12 +53,14 @@ def test_wrong_para_input():
     with pytest.raises(TypeError):
         instr1.add([instr1])
 
+
 def test_other_attributes():
-    assert instr1.storage_path == Path('test/test_ut_is.h5')
+    assert instr1.storage_path == str(Path(test_result_path
+                                           / "instrument.json"))
     assert instr1.is_dataset is False
-    assert instr1.attrs['kkn_CLASS'] == 'INSTRUMENT'
-    assert instr1.attrs['kkn_INSTRUMENT_VERSION'] == '1.0'
+    assert instr1.attrs["kkn_CLASS"] == "INSTRUMENT"
+    assert instr1.attrs["kkn_INSTRUMENT_VERSION"] == "1.0"
+
 
 def test_file_exist():
-    assert instr1.storage_path.exists()
-    
\ No newline at end of file
+    assert Path(test_result_path / "instrument.h5").exists()
diff --git a/Tests/test_model.py b/Tests/test_model.py
index 7faf3a0..8141fa4 100644
--- a/Tests/test_model.py
+++ b/Tests/test_model.py
@@ -1,37 +1,47 @@
 from pathlib import Path
-import pytest
-from components import *
-
-para1 = Parameter('para1')
-para1.attrs['value'] = 1
-para1.attrs['units'] = 'cm'
-para1.attrs['variable'] = '-'
-para1.attrs['origin'] = 'this'
-
-para2 = Parameter('para2')
-para2.attrs['value'] = 2
-para2.attrs['units'] = 'mm'
-para2.attrs['variable'] = '-'
-para2.attrs['origin'] = 'this'
 
-model1 = Model('model1')
+import pytest
+from pykkn.model import Model
+from pykkn.parameter import Parameter
+
+test_result_path = Path("./test_result")
+if not test_result_path.exists():
+    test_result_path.mkdir()
+
+para1 = Parameter("para1")
+para1.attrs["value"] = 1
+para1.attrs["units"] = "cm"
+para1.attrs["variable"] = "-"
+para1.attrs["origin"] = "this"
+
+para2 = Parameter("para2")
+para2.attrs["value"] = 2
+para2.attrs["units"] = "mm"
+para2.attrs["variable"] = "-"
+para2.attrs["origin"] = "this"
+
+model1 = Model("model1")
 model1.add([para1, para2])
-model1.set_storage_path('tests/test_results/model.h5')
+model1.set_storage_path(test_result_path / "model.h5")
 model1.store()
-model1.store(format='json')
+model1.store(format="json")
+
 
 def test_name():
-    assert model1.name == 'model1'
+    assert model1.name == "model1"
+
 
 def test_params():
     assert len(model1.parameters) == 2
     assert model1.parameters[0] == para1
     assert model1.parameters[1] == para2
 
+
 def test_values():
     assert model1.parameters[0].data == 1
     assert model1.parameters[1].data == 2
 
+
 def test_wrong_para_input():
     with pytest.raises(AssertionError):
         model1.add(para1)
@@ -40,13 +50,14 @@ def test_wrong_para_input():
     with pytest.raises(TypeError):
         model1.add([model1])
 
+
 def test_other_attributes():
-    assert model1.storage_path == Path('test/test_ut_md.h5')
+    assert model1.storage_path == str(Path(test_result_path / "model.json"))
     assert model1.is_dataset is False
-    assert model1.attrs['kkn_CLASS'] == 'MODEL'
-    assert model1.attrs['kkn_MODEL_SUBCLASS'] == 'POLY'
-    assert model1.attrs['kkn_POLY_VERSION'] == '1.0'
+    assert model1.attrs["kkn_CLASS"] == "MODEL"
+    assert model1.attrs["kkn_MODEL_SUBCLASS"] == "POLY"
+    assert model1.attrs["kkn_POLY_VERSION"] == "1.0"
+
 
 def test_file_exist():
-    assert model1.storage_path.exists()
-    
\ No newline at end of file
+    assert Path(test_result_path / "model.h5").exists()
diff --git a/Tests/test_parameter.py b/Tests/test_parameter.py
index fd366e3..083d79c 100644
--- a/Tests/test_parameter.py
+++ b/Tests/test_parameter.py
@@ -1,37 +1,42 @@
 from pathlib import Path
+
 import numpy as np
-from components import *
-
-para1 = Parameter('para1')
-para1.attrs['value'] = 1
-para1.attrs['units'] = 'cm'
-para1.attrs['variable'] = '-'
-para1.attrs['origin'] = 'this'
-para1.set_storage_path('tests/test_results/parameter.h5')
+from pykkn.parameter import Parameter
+
+test_result_path = Path("./test_result")
+if not test_result_path.exists():
+    test_result_path.mkdir()
+
+para1 = Parameter("para1")
+para1.attrs["value"] = 1
+para1.attrs["units"] = "cm"
+para1.attrs["variable"] = "-"
+para1.attrs["origin"] = "this"
+para1.set_storage_path(test_result_path / "parameter.h5")
 para1.store()
-para1.store(format='json')
+para1.store(format="json")
 
 
 def test_name():
-    assert para1.name == 'para1'
+    assert para1.name == "para1"
+
 
 def test_value():
     assert para1.data == np.array(1).astype(np.double)
-    
+
+
 def test_other_attrs():
-    assert para1.attrs['units'] == 'cm'
-    assert para1.attrs['variable'] == '-'
-    assert para1.attrs['origin'] == 'this'
-    
-def test_data_type():  
-    assert  np.issubdtype(para1.data.dtype, float)
-                    
+    assert para1.attrs["units"] == "cm"
+    assert para1.attrs["variable"] == "-"
+    assert para1.attrs["origin"] == "this"
+
+
 def test_other_attributes():
-    assert para1.storage_path == Path('test/test_ut_pm.h5')
+    assert para1.storage_path == str(Path(test_result_path / "parameter.json"))
     assert para1.is_dataset is True
-    assert para1.attrs['kkn_CLASS'] == 'PARAMETER'
-    assert para1.attrs['kkn_PARAMETER_VERSION'] == '1.0'
+    assert para1.attrs["kkn_CLASS"] == "PARAMETER"
+    assert para1.attrs["kkn_PARAMETER_VERSION"] == "1.0"
+
 
 def test_file_exist():
-    assert para1.storage_path.exists()
-    
\ No newline at end of file
+    assert Path(test_result_path / "parameter.h5").exists()
diff --git a/Tests/test_pipeline.py b/Tests/test_pipeline.py
index 412929f..0c59eb6 100644
--- a/Tests/test_pipeline.py
+++ b/Tests/test_pipeline.py
@@ -1,61 +1,74 @@
-import numpy as np
 from pathlib import Path
-import pytest
-from components import *
-
-para1 = Parameter('para1')
-para1.attrs['value'] = 1
-para1.attrs['units'] = 'cm'
-para1.attrs['variable'] = '-'
-para1.attrs['origin'] = 'this'
 
-para2 = Parameter('para2')
-para2.attrs['value'] = 2
-para2.attrs['units'] = 'mm'
-para2.attrs['variable'] = '-'
-para2.attrs['origin'] = 'this'
-
-model1 = Model('model1')
+import numpy as np
+import pytest
+from pykkn.dataset import Dataset
+from pykkn.instrument import Instrument
+from pykkn.model import Model
+from pykkn.parameter import Parameter
+from pykkn.pipeline import Pipeline
+
+test_result_path = Path("./test_result")
+if not test_result_path.exists():
+    test_result_path.mkdir()
+
+para1 = Parameter("para1")
+para1.attrs["value"] = 1
+para1.attrs["units"] = "cm"
+para1.attrs["variable"] = "-"
+para1.attrs["origin"] = "this"
+
+para2 = Parameter("para2")
+para2.attrs["value"] = 2
+para2.attrs["units"] = "mm"
+para2.attrs["variable"] = "-"
+para2.attrs["origin"] = "this"
+
+model1 = Model("model1")
 model1.add([para1, para2])
 
-model2 = Model('model2')
+model2 = Model("model2")
 model2.add([para2, para1])
 
-instr1 = Instrument('instr1')
+instr1 = Instrument("instr1")
 instr1.add([model1, model2])
 
-instr2 = Instrument('instr2')
+instr2 = Instrument("instr2")
 instr2.add([model2, model1])
 
-dataset = Dataset('dataset1')
+dataset = Dataset("dataset1")
 dataset.data = np.double(1)
-dataset.attrs['samplerate'] = 1000
-dataset.attrs['timestamp'] = '2022-06-14 12:54:11'
+dataset.attrs["samplerate"] = 1000
+dataset.attrs["timestamp"] = "2022-06-14 12:54:11"
 
-pipe1 = Pipeline('measured/capa1/raw')
-pipe1.attrs['variable'] = 'voltage'
-pipe1.attrs['units'] = 'volts'
-pipe1.attrs['origin'] = 'this'
+pipe1 = Pipeline("measured/capa1/raw")
+pipe1.attrs["variable"] = "voltage"
+pipe1.attrs["units"] = "volts"
+pipe1.attrs["origin"] = "this"
 pipe1.add([instr1, instr2])
 pipe1.add([dataset])
 
 
-pipe1.set_storage_path('tests/test_results/pipeline.h5')
+pipe1.set_storage_path(test_result_path / "pipeline.h5")
 pipe1.store()
-pipe1.store(format='json')
+pipe1.store(format="json")
+
 
 def test_name():
-    assert pipe1.name == 'measured/capa1/raw'
+    assert pipe1.name == "measured/capa1/raw"
+
 
 def test_instruments():
     assert len(pipe1.instruments) == 2
     assert pipe1.instruments[0] == instr1
     assert pipe1.instruments[1] == instr2
 
+
 def test_dataset():
     assert len(pipe1.data) == 1
     assert pipe1.data[0] == dataset
 
+
 def test_wrong_para_input():
     with pytest.raises(AssertionError):
         pipe1.add(instr1)
@@ -64,12 +77,13 @@ def test_wrong_para_input():
     with pytest.raises(TypeError):
         pipe1.add([pipe1])
 
+
 def test_other_attributes():
-    assert pipe1.storage_path == Path('test/test_ut_pip.h5')
+    assert pipe1.storage_path == str(Path(test_result_path / "pipeline.json"))
     assert pipe1.is_dataset is False
-    assert pipe1.attrs['kkn_CLASS'] == 'PIPELINE'
-    assert pipe1.attrs['kkn_PIPELINE_VERSION'] == '1.0'
+    assert pipe1.attrs["kkn_CLASS"] == "PIPELINE"
+    assert pipe1.attrs["kkn_PIPELINE_VERSION"] == "1.0"
+
 
 def test_file_exist():
-    assert pipe1.storage_path.exists()
-    
\ No newline at end of file
+    assert Path(test_result_path / "pipeline.h5").exists()
diff --git a/Tests/test_run.py b/Tests/test_run.py
index c6a87c8..a0b2b7d 100644
--- a/Tests/test_run.py
+++ b/Tests/test_run.py
@@ -1,72 +1,86 @@
-import numpy as np
 from pathlib import Path
-import pytest
-from components import *
-
-para1 = Parameter('para1')
-para1.attrs['value'] = 1
-para1.attrs['units'] = 'cm'
-para1.attrs['variable'] = '-'
-para1.attrs['origin'] = 'this'
 
-para2 = Parameter('para2')
-para2.attrs['value'] = 2
-para2.attrs['units'] = 'mm'
-para2.attrs['variable'] = '-'
-para2.attrs['origin'] = 'this'
-
-model1 = Model('model1')
+import numpy as np
+import pytest
+from pykkn.dataset import Dataset
+from pykkn.instrument import Instrument
+from pykkn.model import Model
+from pykkn.parameter import Parameter
+from pykkn.pipeline import Pipeline
+from pykkn.run import Run
+
+test_result_path = Path("./test_result")
+if not test_result_path.exists():
+    test_result_path.mkdir()
+
+para1 = Parameter("para1")
+para1.attrs["value"] = 1
+para1.attrs["units"] = "cm"
+para1.attrs["variable"] = "-"
+para1.attrs["origin"] = "this"
+
+para2 = Parameter("para2")
+para2.attrs["value"] = 2
+para2.attrs["units"] = "mm"
+para2.attrs["variable"] = "-"
+para2.attrs["origin"] = "this"
+
+model1 = Model("model1")
 model1.add([para1, para2])
 
-model2 = Model('model2')
+model2 = Model("model2")
 model2.add([para2, para1])
 
-instr1 = Instrument('instr1')
+instr1 = Instrument("instr1")
 instr1.add([model1, model2])
 
-instr2 = Instrument('instr2')
+instr2 = Instrument("instr2")
 instr2.add([model2, model1])
 
-dataset = Dataset('dataset1')
+dataset = Dataset("dataset1")
 dataset.data = np.double(1)
-dataset.attrs['samplerate'] = 1000
-dataset.attrs['timestamp'] = '2022-06-14 12:54:11'
+dataset.attrs["samplerate"] = 1000
+dataset.attrs["timestamp"] = "2022-06-14 12:54:11"
 
-pipe1 = Pipeline('measured/capa1/raw')
-pipe1.attrs['variable'] = 'voltage'
-pipe1.attrs['units'] = 'volts'
-pipe1.attrs['origin'] = 'this'
+pipe1 = Pipeline("measured/capa1/raw")
+pipe1.attrs["variable"] = "voltage"
+pipe1.attrs["units"] = "volts"
+pipe1.attrs["origin"] = "this"
 pipe1.add([instr1, instr2])
 pipe1.add([dataset])
 
-pipe2 = Pipeline('derived/capa2/scaled')
-pipe2.attrs['variable'] = 'length'
-pipe2.attrs['units'] = 'cm'
-pipe2.attrs['origin'] = 'this'
+pipe2 = Pipeline("derived/capa2/scaled")
+pipe2.attrs["variable"] = "length"
+pipe2.attrs["units"] = "cm"
+pipe2.attrs["origin"] = "this"
 pipe2.add([instr2, instr1])
 pipe2.add([dataset])
 
-run = Run('run1')
+run = Run("run1")
 run.add([para1, para2])
 run.add([pipe1, pipe2])
 
-run.set_storage_path('tests/test_results/run.h5')
+run.set_storage_path(test_result_path / "run.h5")
 run.store()
-run.store(format='json')
+run.store(format="json")
+
 
 def test_name():
-    assert run.name == 'run1'
+    assert run.name == "run1"
+
 
 def test_instruments():
     assert len(run.parameters) == 2
     assert run.parameters[0] == para1
     assert run.parameters[1] == para2
 
+
 def test_pipeline():
     assert len(run.pipelines) == 2
     assert run.pipelines[0] == pipe1
     assert run.pipelines[1] == pipe2
 
+
 def test_wrong_para_input():
     with pytest.raises(AssertionError):
         run.add(para1)
@@ -75,12 +89,13 @@ def test_wrong_para_input():
     with pytest.raises(TypeError):
         run.add([run])
 
+
 def test_other_attributes():
-    assert run.storage_path == Path('test/test_ut_run.h5')
+    assert run.storage_path == str(Path(test_result_path / "run.json"))
     assert run.is_dataset is False
-    assert run.attrs['kkn_CLASS'] == 'MSMTRUN'
-    assert run.attrs['kkn_MSMTRUN_VERSION'] == '1.0'
+    assert run.attrs["kkn_CLASS"] == "MSMTRUN"
+    assert run.attrs["kkn_MSMTRUN_VERSION"] == "1.0"
+
 
 def test_file_exist():
-    assert run.storage_path.exists()
-    
\ No newline at end of file
+    assert Path(test_result_path / "run.h5").exists()
-- 
GitLab