Skip to content

Commit 6e471e5

Browse files
Add some more tests
1 parent efaccb1 commit 6e471e5

File tree

2 files changed

+83
-2
lines changed

2 files changed

+83
-2
lines changed

src/easydynamics/experiment/experiment.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ def load_hdf5(self, filename: str, name: str):
2828

2929
def save_hdf5(self, name: str, filename: str):
3030
"""Save a single dataset to HDF5."""
31-
sc.io.to_hdf5(self._data[name], filename)
31+
sc.io.save_hdf5(self._data[name], filename)
3232

3333
def save_all_hdf5(self, folder: str):
3434
"""Save all datasets to individual HDF5 files in a folder."""
3535
import os
3636

3737
os.makedirs(folder, exist_ok=True)
3838
for name, data in self._data.items():
39-
sc.io.to_hdf5(data, os.path.join(folder, f"{name}.h5"))
39+
sc.io.save_hdf5(data, os.path.join(folder, f"{name}.h5"))
4040

4141
def append_data(self, new_data: sc.DataArray, name: str):
4242
"""Append data with a name."""

tests/unit_tests/experiment/test_experiment.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ def experiment(self):
1919
return experiment
2020

2121
def test_get_data(self, experiment):
22+
# WHEN
2223
data = experiment.get_data("test_data")
24+
25+
# THEN EXPECT
2326
assert isinstance(data, sc.DataArray)
2427
assert "Q" in data.dims
2528
assert "energy" in data.dims
@@ -28,3 +31,81 @@ def test_get_data(self, experiment):
2831
assert sc.identical(
2932
data.data, sc.array(dims=["Q", "energy"], values=np.ones((10, 11)))
3033
)
34+
35+
def test_remove_all_data(self, experiment):
36+
# WHEN
37+
experiment.remove_all_data()
38+
data = experiment.get_data()
39+
40+
# THEN EXPECT
41+
assert data == {}
42+
43+
def test_get_all_data(self, experiment):
44+
# WHEN
45+
data = experiment.get_data()
46+
47+
# THEN EXPECT
48+
assert isinstance(data, dict)
49+
assert "test_data" in data
50+
assert isinstance(data["test_data"], sc.DataArray)
51+
52+
def test_load_hdf5(self, tmp_path, experiment):
53+
# WHEN
54+
filename = tmp_path / "test.h5"
55+
data_to_save = experiment.get_data("test_data")
56+
sc.io.save_hdf5(data_to_save, filename)
57+
58+
# THEN
59+
new_experiment = Experiment("new_experiment")
60+
new_experiment.load_hdf5(str(filename), "loaded_data")
61+
loaded_data = new_experiment.get_data("loaded_data")
62+
63+
# EXPECT
64+
assert sc.identical(data_to_save, loaded_data)
65+
66+
def test_save_hdf5(self, tmp_path, experiment):
67+
# WHEN THEN
68+
filename = tmp_path / "saved_data.h5"
69+
experiment.save_hdf5("test_data", str(filename))
70+
71+
# EXPECT
72+
loaded_data = sc.io.load_hdf5(str(filename))
73+
original_data = experiment.get_data("test_data")
74+
assert sc.identical(original_data, loaded_data)
75+
76+
def test_save_all_hdf5(self, tmp_path, experiment):
77+
# WHEN THEN
78+
folder = tmp_path / "data_folder"
79+
experiment.save_all_hdf5(str(folder))
80+
81+
# EXPECT
82+
import os
83+
84+
files = os.listdir(folder)
85+
assert "test_data.h5" in files
86+
loaded_data = sc.io.load_hdf5(str(folder / "test_data.h5"))
87+
original_data = experiment.get_data("test_data")
88+
assert sc.identical(original_data, loaded_data)
89+
90+
def test_append_data(self, experiment):
91+
# WHEN
92+
name = "new_data"
93+
Q = sc.linspace("Q", 1.0, 2.0, num=5, unit="1/Angstrom")
94+
energy = sc.linspace("energy", -10, 10, num=6, unit="meV")
95+
values = sc.array(dims=["Q", "energy"], values=np.ones((5, 6)) * 2)
96+
new_data = sc.DataArray(data=values, coords={"Q": Q, "energy": energy})
97+
98+
# THEN
99+
experiment.append_data(new_data, name)
100+
101+
# EXPECT
102+
assert experiment._data.keys() == {"test_data", "new_data"}
103+
data = experiment.get_data(name)
104+
assert isinstance(data, sc.DataArray)
105+
assert "Q" in data.dims
106+
assert "energy" in data.dims
107+
assert data.sizes["Q"] == 5
108+
assert data.sizes["energy"] == 6
109+
assert sc.identical(
110+
data.data, sc.array(dims=["Q", "energy"], values=np.ones((5, 6)) * 2)
111+
)

0 commit comments

Comments
 (0)