Skip to content

Commit 56b0a37

Browse files
committed
Add tests for Sequence.data
1 parent 578d61d commit 56b0a37

File tree

1 file changed

+111
-0
lines changed

1 file changed

+111
-0
lines changed

tests/test_sequence_data.py

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
from collections.abc import Callable
2+
3+
import numpy as np
4+
import pytest
5+
6+
from eitprocessing.datahandling.intervaldata import IntervalData
7+
from eitprocessing.datahandling.sequence import Sequence, _DataAccess
8+
from tests.test_breath_detection import ContinuousData
9+
10+
11+
@pytest.fixture
12+
def create_continuous_data_object():
13+
return lambda label: ContinuousData(
14+
label=label,
15+
name="name",
16+
unit="unit",
17+
category="other",
18+
time=np.array([]),
19+
values=np.array([]),
20+
)
21+
22+
23+
@pytest.fixture
24+
def create_interval_data_object():
25+
return lambda label: IntervalData(
26+
label=label,
27+
name="name",
28+
unit="unit",
29+
category="other",
30+
intervals=[],
31+
values=[],
32+
)
33+
34+
35+
def test_init():
36+
sequence = Sequence()
37+
38+
assert isinstance(sequence.data, _DataAccess)
39+
assert hasattr(sequence.data, "get")
40+
assert hasattr(sequence.data, "add")
41+
42+
43+
def test_get(create_continuous_data_object: Callable, create_interval_data_object: Callable):
44+
sequence = Sequence()
45+
46+
assert sequence.data.get("foo", None) is None
47+
assert "foo" not in sequence.data
48+
49+
with pytest.raises(KeyError):
50+
sequence.data.get("foo")
51+
52+
with pytest.raises(KeyError):
53+
sequence.data["foo"]
54+
55+
continuous_data_object = create_continuous_data_object("foo")
56+
sequence.continuous_data.add(continuous_data_object)
57+
58+
assert continuous_data_object in sequence.continuous_data.values()
59+
assert sequence.data.get("foo", None) is continuous_data_object
60+
assert "foo" in sequence.data
61+
assert sequence.data.get("foo") is continuous_data_object
62+
assert sequence.data["foo"] is continuous_data_object
63+
64+
interval_data_object = create_interval_data_object("bar")
65+
sequence.interval_data.add(interval_data_object)
66+
67+
assert interval_data_object in sequence.interval_data.values()
68+
assert sequence.data.get("bar", None) is interval_data_object
69+
assert "bar" in sequence.data
70+
assert sequence.data.get("bar") is interval_data_object
71+
assert sequence.data["bar"] is interval_data_object
72+
73+
74+
def test_add(create_continuous_data_object: Callable, create_interval_data_object: Callable):
75+
sequence = Sequence()
76+
77+
continuous_data_object = create_continuous_data_object("foo")
78+
sequence.data.add(continuous_data_object)
79+
80+
assert "foo" in sequence.data
81+
assert continuous_data_object in sequence.continuous_data.values()
82+
83+
interval_data_object = create_interval_data_object("bar")
84+
sequence.data["bar"] = interval_data_object
85+
86+
assert "bar" in sequence.data
87+
assert interval_data_object in sequence.interval_data.values()
88+
89+
continuous_data_object_2 = create_continuous_data_object("foobar")
90+
with pytest.raises(KeyError):
91+
sequence.data["not foobar"] = continuous_data_object_2
92+
93+
94+
def test_duplicate_keys(create_continuous_data_object: Callable, create_interval_data_object: Callable):
95+
sequence = Sequence()
96+
97+
continuous_data_object = create_continuous_data_object("foo")
98+
sequence.continuous_data.add(continuous_data_object)
99+
100+
assert "foo" in sequence.continuous_data
101+
102+
interval_data_object = create_interval_data_object("foo")
103+
104+
with pytest.raises(KeyError):
105+
sequence.data.add(interval_data_object)
106+
107+
# you can still add through the DataCollection, but this interface will not be available anymore
108+
sequence.interval_data.add(interval_data_object)
109+
110+
with pytest.raises(KeyError):
111+
_ = sequence.data

0 commit comments

Comments
 (0)