Skip to content

Commit cd0ef94

Browse files
committed
test: add missing error messages for valid_range asserts
1 parent 0e4cbe9 commit cd0ef94

1 file changed

Lines changed: 58 additions & 46 deletions

File tree

tests/test_experiment.py

Lines changed: 58 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,18 @@ def test_experiment_initialization_and_device_loading(tmp_path, mock_interpolato
9292
"eye_tracker": {"interpolation": mock_interpolator},
9393
}
9494
exp = Experiment(root_folder=str(tmp_path), modality_config=config)
95-
assert "screen" in exp.devices, "Expected 'screen' in experiment devices"
96-
assert "eye_tracker" in exp.devices, "Expected 'eye_tracker' in experiment devices"
97-
assert (
98-
"ignored_device" not in exp.devices
99-
), "Expected 'ignored_device' to be excluded"
100-
assert set(exp.device_names) == {
101-
"screen",
102-
"eye_tracker",
103-
}, f"Expected {{'screen', 'eye_tracker'}}, got {set(exp.device_names)}"
95+
assert "screen" in exp.devices, (
96+
f"Expected 'screen' in experiment devices but exp.devices = {exp.devices}"
97+
)
98+
assert "eye_tracker" in exp.devices, (
99+
f"Expected 'eye_tracker' in experiment devices but exp.devices = {exp.devices}"
100+
)
101+
assert "ignored_device" not in exp.devices, (
102+
f"Expected 'ignored_device' to be excluded from experiment devices but exp.devices = {exp.devices}"
103+
)
104+
assert set(exp.device_names) == {"screen", "eye_tracker"}, (
105+
f"Expected {{'screen', 'eye_tracker'}}, got {set(exp.device_names)}"
106+
)
104107

105108

106109
def test_experiment_interpolate_routing(tmp_path, mock_interpolator):
@@ -116,16 +119,16 @@ def test_experiment_interpolate_routing(tmp_path, mock_interpolator):
116119
np.testing.assert_array_equal(
117120
res,
118121
np.array([1, 2, 3]),
119-
err_msg="Interpolated result does not match mock output",
122+
err_msg=f"Interpolated result does not match mock output. Got {res}",
120123
)
121124
res_dict = exp.interpolate(test_times, device=None)
122-
assert isinstance(
123-
res_dict, dict
124-
), f"Expected dict return for device=None, got {type(res_dict)}"
125+
assert isinstance(res_dict, dict), (
126+
f"Expected dict return for device=None, got {type(res_dict)}"
127+
)
125128
np.testing.assert_array_equal(
126129
res_dict["screen"],
127130
np.array([1, 2, 3]),
128-
err_msg="Interpolated dict result does not match mock output",
131+
err_msg=f"Interpolated dict result does not match mock output. Got {res_dict['screen']}",
129132
)
130133

131134

@@ -154,10 +157,9 @@ def test_get_valid_range_all_devices(tmp_path, device_name, start_t, end_t):
154157
root_folder=str(experiment_path), modality_config=config
155158
)
156159
valid_range = experiment.get_valid_range(device_name)
157-
assert valid_range == (
158-
start_t,
159-
end_t,
160-
), f"Expected valid range {(start_t, end_t)} for {device_name}, got {valid_range}"
160+
assert valid_range == (start_t, end_t), (
161+
f"Expected valid range {(start_t, end_t)} for {device_name}, got {valid_range}"
162+
)
161163

162164

163165
def test_get_valid_range_raises_for_invalid_device(tmp_path):
@@ -214,9 +216,15 @@ def test_experiment_numeric_precision_offset(
214216
modality_config=make_modality_config("device_0"),
215217
)
216218
valid_range = experiment.get_valid_range("device_0")
217-
# Keep pytest.approx here as it's dealing with floats generated by Hypothesis
218-
assert valid_range[0] == pytest.approx(start_offset)
219-
assert valid_range[1] == pytest.approx(start_offset + duration)
219+
220+
assert valid_range[0] == pytest.approx(start_offset), (
221+
f"Expected valid_range[0] to be approx {start_offset}, got {valid_range[0]}"
222+
)
223+
224+
assert valid_range[1] == pytest.approx(start_offset + duration), (
225+
f"Expected valid_range[1] to be approx {start_offset + duration}, got {valid_range[1]}"
226+
)
227+
220228
res = experiment.interpolate(np.array([start_offset]), device="device_0")
221229
assert res is not None
222230

@@ -279,13 +287,12 @@ def test_experiment_start_end_time_reflects_union(
279287
root_folder=str(experiment_path), modality_config=config
280288
)
281289

282-
# Removed pytest.approx here
283-
assert experiment.start_time == (
284-
expected_start
285-
), f"Expected start_time={expected_start}, got {experiment.start_time}"
286-
assert experiment.end_time == (
287-
expected_end
288-
), f"Expected end_time={expected_end}, got {experiment.end_time}"
290+
assert experiment.start_time == (expected_start), (
291+
f"Expected start_time={expected_start}, got {experiment.start_time}"
292+
)
293+
assert experiment.end_time == (expected_end), (
294+
f"Expected end_time={expected_end}, got {experiment.end_time}"
295+
)
289296

290297

291298
@pytest.mark.parametrize("override_meta", INVALID_META_CASES, ids=INVALID_META_IDS)
@@ -321,9 +328,13 @@ def test_experiment_skips_invalid_devices(tmp_path, override_meta, caplog):
321328
duration_val = np.random.lognormal(mean=0.0, sigma=1.0)
322329
end_val = start_val + duration_val
323330

331+
# Generate random values for the invalid device as well
332+
inv_start = np.random.lognormal(mean=0.0, sigma=1.0)
333+
inv_end = inv_start + 10.0
334+
324335
devices_kwargs = [
325336
{"start_time": start_val, "t_end": end_val}, # valid device
326-
{"start_time": 0.0, "t_end": 10.0}, # invalid device
337+
{"start_time": inv_start, "t_end": inv_end}, # invalid device
327338
]
328339

329340
with setup_test_experiment(
@@ -348,20 +359,21 @@ def test_experiment_skips_invalid_devices(tmp_path, override_meta, caplog):
348359
root_folder=str(experiment_path), modality_config=config
349360
)
350361

351-
assert (
352-
"valid_device" in experiment.devices
353-
), "Expected 'valid_device' to be initialized"
354-
assert (
355-
"invalid_device" not in experiment.devices
356-
), "Expected 'invalid_device' to be skipped"
357-
358-
# Removed pytest.approx here
359-
assert experiment.start_time == (
360-
start_val
361-
), f"Expected start_time={start_val}, got {experiment.start_time}"
362-
assert experiment.end_time == (
363-
end_val
364-
), f"Expected end_time={end_val}, got {experiment.end_time}"
365-
assert any(
366-
"invalid_device" in message for message in caplog.messages
367-
), "Expected warning about invalid_device was skipped"
362+
assert "valid_device" in experiment.devices, (
363+
f"Expected 'valid_device' to be in experiment.devices but experiment.devices = {experiment.devices}"
364+
)
365+
366+
assert "invalid_device" not in experiment.devices, (
367+
f"Expected 'invalid_device' to be skipped in experiment.devices, instead experiment.devices = {experiment.devices}"
368+
)
369+
370+
assert experiment.start_time == (start_val), (
371+
f"Expected start_time={start_val}, got {experiment.start_time}"
372+
)
373+
assert experiment.end_time == (end_val), (
374+
f"Expected end_time={end_val}, got {experiment.end_time}"
375+
)
376+
377+
assert any("invalid_device" in message for message in caplog.messages), (
378+
f"Expected warning about invalid_device was skipped. caplog.messages = {caplog.messages}"
379+
)

0 commit comments

Comments
 (0)