Coverage for nilearn/glm/tests/test_check_events_file_uses_tab_separators.py: 0%
48 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-16 12:32 +0200
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-16 12:32 +0200
1import pandas as pd
2import pytest
4from nilearn.glm.first_level.first_level import (
5 _check_events_file_uses_tab_separators,
6)
9def make_data_for_test_runs():
10 data_for_temp_datafile = [
11 ["csf", "constant", "linearTrend", "wm"],
12 [13343.032102491035, 1.0, 0.0, 9486.199545677482],
13 [13329.224068063204, 1.0, 1.0, 9497.003324892803],
14 [13291.755627241291, 1.0, 2.0, 9484.012965365506],
15 ]
17 delimiters = {
18 "tab": "\t",
19 "comma": ",",
20 "space": " ",
21 "semicolon": ";",
22 "hyphen": "-",
23 }
25 return data_for_temp_datafile, delimiters
28def _create_test_file(temp_csv, test_data, delimiter):
29 test_data = pd.DataFrame(test_data)
30 test_data.to_csv(temp_csv, sep=delimiter)
33def _run_test_for_invalid_separator(filepath, delimiter_name):
34 if delimiter_name not in ("tab", "comma"):
35 with pytest.raises(
36 ValueError,
37 match="The values in the events file are not separated by tabs",
38 ):
39 _check_events_file_uses_tab_separators(events_files=filepath)
40 else:
41 result = _check_events_file_uses_tab_separators(events_files=filepath)
42 assert result is None
45def test_for_invalid_separator(tmp_path):
46 data_for_temp_datafile, delimiters = make_data_for_test_runs()
47 for delimiter_name, delimiter_char in delimiters.items():
48 temp_tsv_file = (
49 tmp_path / f"tempfile.{delimiter_name} separated values"
50 )
51 _create_test_file(
52 temp_csv=temp_tsv_file,
53 test_data=data_for_temp_datafile,
54 delimiter=delimiter_char,
55 )
56 _run_test_for_invalid_separator(
57 filepath=temp_tsv_file, delimiter_name=delimiter_name
58 )
61def test_with_2d_dataframe():
62 data_for_pandas_dataframe, _ = make_data_for_test_runs()
63 events_pandas_dataframe = pd.DataFrame(data_for_pandas_dataframe)
64 result = _check_events_file_uses_tab_separators(
65 events_files=events_pandas_dataframe
66 )
67 assert result is None
70def test_with_1d_dataframe():
71 data_for_pandas_dataframe, _ = make_data_for_test_runs()
72 for dataframe_ in data_for_pandas_dataframe:
73 events_pandas_dataframe = pd.DataFrame(dataframe_)
74 result = _check_events_file_uses_tab_separators(
75 events_files=events_pandas_dataframe
76 )
77 assert result is None
80def test_for_invalid_filepath():
81 filepath = "junk_file_path.csv"
82 result = _check_events_file_uses_tab_separators(events_files=filepath)
83 assert result is None
86def test_for_pandas_dataframe():
87 events_pandas_dataframe = pd.DataFrame([["a", "b", "c"], [0, 1, 2]])
88 result = _check_events_file_uses_tab_separators(
89 events_files=events_pandas_dataframe
90 )
91 assert result is None
94def test_binary_bytearray_of_ints_data_error(tmp_path):
95 temp_data_bytearray_from_ints = bytearray([0, 1, 0, 11, 10])
96 temp_bin_file = tmp_path / "temp_bin.bin"
97 with temp_bin_file.open("wb") as temp_bin_obj:
98 temp_bin_obj.write(temp_data_bytearray_from_ints)
99 with pytest.raises(
100 ValueError,
101 match="The values in the events file are not separated by tabs",
102 ):
103 _check_events_file_uses_tab_separators(events_files=temp_bin_file)