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

1import pandas as pd 

2import pytest 

3 

4from nilearn.glm.first_level.first_level import ( 

5 _check_events_file_uses_tab_separators, 

6) 

7 

8 

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 ] 

16 

17 delimiters = { 

18 "tab": "\t", 

19 "comma": ",", 

20 "space": " ", 

21 "semicolon": ";", 

22 "hyphen": "-", 

23 } 

24 

25 return data_for_temp_datafile, delimiters 

26 

27 

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) 

31 

32 

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 

43 

44 

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 ) 

59 

60 

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 

68 

69 

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 

78 

79 

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 

84 

85 

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 

92 

93 

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)