4
4
from astropy .time import Time
5
5
from hermes_core .util import util
6
6
7
+ time = "2024-04-06T12:06:21"
8
+ time_formatted = "20240406_120621"
9
+
10
+
11
+ # fmt: off
12
+ @pytest .mark .parametrize (
13
+ "instrument, time, level, version, result" ,
14
+ [
15
+ ("eea" , time , "l1" , "1.2.3" , "hermes_eea_l1_{}_v1.2.3.cdf" .format (time_formatted )),
16
+ ("merit" , time , "l2" , "2.4.5" , "hermes_mrt_l2_{}_v2.4.5.cdf" .format (time_formatted )),
17
+ ("nemisis" , time , "l2" , "1.3.5" , "hermes_nms_l2_{}_v1.3.5.cdf" .format (time_formatted )),
18
+ ("spani" , time , "l3" , "2.4.5" , "hermes_spn_l3_{}_v2.4.5.cdf" .format (time_formatted )),
19
+ ],
20
+ )
21
+ def test_science_filename_output_a (instrument , time , level , version , result ):
22
+ """Test simple cases with expected output"""
23
+ assert (
24
+ util .create_science_filename (instrument , time , level = level , version = version )
25
+ == result
26
+ )
27
+ # fmt: on
7
28
8
- def test_science_filename_output ():
9
- """Test expected output"""
10
- time = "2024-04-06T12:06:21"
11
- time_formatted = "20240406_120621"
12
29
13
- assert util .create_science_filename (
14
- "eea" , time , level = "l0" , version = "1.2.3"
15
- ) == "hermes_eea_l0_{}_v1.2.3" .format (time_formatted )
16
- # merit
17
- assert util .create_science_filename (
18
- "merit" , time , level = "l2" , version = "2.4.5"
19
- ) == "hermes_mrt_l2_{}_v2.4.5" .format (time_formatted )
20
- # nemisis and version
21
- assert util .create_science_filename (
22
- "nemisis" , time , level = "l2" , version = "1.3.5"
23
- ) == "hermes_nms_l2_{}_v1.3.5" .format (time_formatted )
24
- # spani and level
25
- assert util .create_science_filename (
26
- "spani" , time , level = "l3" , version = "2.4.5"
27
- ) == "hermes_spn_l3_{}_v2.4.5" .format (time_formatted )
30
+ def test_science_filename_output_b ():
31
+ """Test more complex cases of expected output"""
32
+
28
33
# mode
29
34
assert util .create_science_filename (
30
35
"spani" , time , level = "l3" , mode = "2s" , version = "2.4.5"
31
- ) == "hermes_spn_2s_l3_{}_v2.4.5" .format (time_formatted )
36
+ ) == "hermes_spn_2s_l3_{}_v2.4.5.cdf " .format (time_formatted )
32
37
# test
33
38
assert util .create_science_filename (
34
- "spani" , time , level = "l0 " , version = "2.4.5" , test = True
35
- ) == "hermes_spn_l0test_ {}_v2.4.5" .format (time_formatted )
39
+ "spani" , time , level = "l1 " , version = "2.4.5" , test = True
40
+ ) == "hermes_spn_l1test_ {}_v2.4.5.cdf " .format (time_formatted )
36
41
# all options
37
42
assert util .create_science_filename (
38
43
"spani" ,
@@ -42,7 +47,7 @@ def test_science_filename_output():
42
47
descriptor = "burst" ,
43
48
version = "2.4.5" ,
44
49
test = True ,
45
- ) == "hermes_spn_2s_l3test_burst_{}_v2.4.5" .format (time_formatted )
50
+ ) == "hermes_spn_2s_l3test_burst_{}_v2.4.5.cdf " .format (time_formatted )
46
51
# Time object instead of str
47
52
assert util .create_science_filename (
48
53
"spani" ,
@@ -52,7 +57,7 @@ def test_science_filename_output():
52
57
descriptor = "burst" ,
53
58
version = "2.4.5" ,
54
59
test = True ,
55
- ) == "hermes_spn_2s_l3test_burst_{}_v2.4.5" .format (time_formatted )
60
+ ) == "hermes_spn_2s_l3test_burst_{}_v2.4.5.cdf " .format (time_formatted )
56
61
# Time object but created differently
57
62
assert util .create_science_filename (
58
63
"spani" ,
@@ -62,81 +67,7 @@ def test_science_filename_output():
62
67
descriptor = "burst" ,
63
68
version = "2.4.5" ,
64
69
test = True ,
65
- ) == "hermes_spn_2s_l3test_burst_{}_v2.4.5" .format (time_formatted )
66
-
67
-
68
- def test_science_filename_exceptions ():
69
- """Test for errors"""
70
- good_time = "2025-06-02T12:04:01"
71
- good_instrument = "eea"
72
- good_level = "l0"
73
- good_version = "1.3.4"
74
- with pytest .raises (ValueError ):
75
- # not enough depth to version number
76
- util .create_science_filename (
77
- good_instrument , good_time , level = good_level , version = "1.3"
78
- )
79
- util .create_science_filename (
80
- good_instrument , good_time , level = good_level , version = "1"
81
- )
82
- util .create_science_filename (
83
- good_instrument , good_time , level = good_level , version = "1.5.6.7"
84
- )
85
- util .create_science_filename (
86
- good_instrument , good_time , level = good_level , version = "1.."
87
- )
88
- # a letter in version number
89
- util .create_science_filename (
90
- good_instrument , good_time , level = good_level , version = "a.5.6"
91
- )
92
-
93
- # wrong level specification
94
- util .create_science_filename (
95
- good_instrument , good_time , level = "la" , version = good_version
96
- )
97
- util .create_science_filename (
98
- good_instrument , good_time , level = "squirrel" , version = good_version
99
- )
100
-
101
- # wrong instrument name
102
- util .create_science_filename (
103
- "eeb" , good_time , level = good_level , version = good_version
104
- )
105
- util .create_science_filename (
106
- "fpi" , good_time , level = good_level , version = good_version
107
- )
108
- util .create_science_filename (
109
- "potato" , good_time , level = good_level , version = good_version
110
- )
111
-
112
- # bad time string
113
- # non-existent time
114
- util .create_science_filename (
115
- good_instrument ,
116
- "2023-13-04T12:06:21" ,
117
- level = good_level ,
118
- version = good_version ,
119
- )
120
- # not isot format
121
- util .create_science_filename (
122
- "eeb" , "2023/13/04 12:06:21" , level = good_level , version = good_version
123
- )
124
- # not valid input for time
125
- util .create_science_filename (
126
- "eeb" , time = 12345345 , level = good_level , version = good_version
127
- )
128
- # _ character in mode
129
- util .create_science_filename (
130
- "eeb" , time = 12345345 , level = good_level , version = good_version , mode = "o_o"
131
- )
132
- # _ character in descriptor
133
- util .create_science_filename (
134
- "eeb" ,
135
- time = 12345345 ,
136
- level = good_level ,
137
- version = good_version ,
138
- descriptor = "blue_green" ,
139
- )
70
+ ) == "hermes_spn_2s_l3test_burst_{}_v2.4.5.cdf" .format (time_formatted )
140
71
141
72
142
73
def test_parse_science_filename_output ():
@@ -224,8 +155,8 @@ def test_parse_science_filename_output():
224
155
assert util .parse_science_filename (f ) == input
225
156
226
157
227
- def test_parse_science_filename_errors ():
228
- """Test for errors"""
158
+ def test_parse_science_filename_errors_l1 ():
159
+ """Test for errors in l1 and above files """
229
160
with pytest .raises (ValueError ):
230
161
# wrong mission name
231
162
f = "veeger_spn_2s_l3test_burst_20240406_120621_v2.4.5"
@@ -234,3 +165,73 @@ def test_parse_science_filename_errors():
234
165
# wrong instrument name
235
166
f = "hermes_www_2s_l3test_burst_20240406_120621_v2.4.5"
236
167
util .parse_science_filename (f )
168
+
169
+
170
+ good_time = "2025-06-02T12:04:01"
171
+ good_instrument = "eea"
172
+ good_level = "l1"
173
+ good_version = "1.3.4"
174
+
175
+
176
+ # fmt: off
177
+ @pytest .mark .parametrize (
178
+ "instrument,time,level,version" ,
179
+ [
180
+ (good_instrument , good_time , good_level , "1.3" ), # bad version specifications
181
+ (good_instrument , good_time , good_level , "1" ),
182
+ (good_instrument , good_time , good_level , "1.5.6.7" ),
183
+ (good_instrument , good_time , good_level , "1.." ),
184
+ (good_instrument , good_time , good_level , "a.5.6" ),
185
+ (good_instrument , good_time , "la" , good_version ), # wrong level specifications
186
+ (good_instrument , good_time , "squirrel" , good_version ),
187
+ (good_instrument , good_time , "l0" , good_version ),
188
+ ("potato" , good_time , good_level , good_version ), # wrong instrument names
189
+ ("eeb" , good_time , good_level , good_version ),
190
+ ("fpi" , good_time , good_level , good_version ),
191
+ (good_instrument , "2023-13-04T12:06:21" , good_level , good_version ), # non-existent time
192
+ (good_instrument , "2023/13/04 12:06:21" , good_level , good_version ), # not isot format
193
+ (good_instrument , "2023/13/04 12:06:21" , good_level , good_version ), # not isot format
194
+ (good_instrument , "12345345" , good_level , good_version ), # not valid input for time
195
+ ]
196
+ )
197
+ def test_science_filename_errors_l1_a (instrument , time , level , version ):
198
+ """"""
199
+ with pytest .raises (ValueError ) as e :
200
+ util .create_science_filename (
201
+ instrument , time , level = level , version = version
202
+ )
203
+ # fmt: on
204
+
205
+
206
+ def test_science_filename_errors_l1_b ():
207
+ with pytest .raises (ValueError ):
208
+ # _ character in mode
209
+ util .create_science_filename (
210
+ "eeb" , time = "12345345" , level = good_level , version = good_version , mode = "o_o"
211
+ )
212
+ with pytest .raises (ValueError ):
213
+ # _ character in descriptor
214
+ util .create_science_filename (
215
+ "eeb" ,
216
+ time = "12345345" ,
217
+ level = good_level ,
218
+ version = good_version ,
219
+ descriptor = "blue_green" ,
220
+ )
221
+
222
+
223
+ # fmt: off
224
+ @pytest .mark .parametrize ("filename,instrument,time,level,version" , [
225
+ ("hermes_MAG_l0_2024094-124603_v01.bin" , "nemisis" , "2024-04-03T12:46:03" , "l0" , "01" ),
226
+ ("hermes_EEA_l0_2026337-124603_v11.bin" , "eea" , "2026-12-03T12:46:03" , "l0" , "11" ),
227
+ ("hermes_MERIT_l0_2026215-124603_v21.bin" , "merit" , "2026-08-03T12:46:03" , "l0" , "21" ),
228
+ ("hermes_SPANI_l0_2026337-065422_v11.bin" , "spani" , "2026-12-03T06:54:22" , "l0" , "11" ),
229
+ ])
230
+ def test_parse_l0_filenames (filename , instrument , time , level , version ):
231
+ """Testing parsing of MOC-generated level 0 files."""
232
+ result = util .parse_science_filename (filename )
233
+ assert result ['instrument' ] == instrument
234
+ assert result ['level' ] == level
235
+ assert result ['version' ] == version
236
+ assert result ['time' ] == Time (time )
237
+ # fmt: on
0 commit comments