##// END OF EJS Templates
Adds valid test cases on bands
Alexandre Leroux -
r947:2deaaf7a3e74
parent child
Show More
@@ -0,0 +1,59
1 # -----------
2 # AMDA INFO :
3 # -----------
4 # AMDA_ABOUT : Created by CDPP/AMDA(c)
5 # AMDA_VERSION : 3.5.0
6 # AMDA_ACKNOWLEDGEMENT : CDPP/AMDA Team
7 #
8 # --------------
9 # REQUEST INFO :
10 # --------------
11 # REQUEST_STRUCTURE : one-file-per-parameter-per-interval
12 # REQUEST_TIME_FORMAT : ISO 8601
13 # REQUEST_OUTPUT_PARAMS : tha_ion_sp
14 #
15 # -----------------
16 # BASE PARAMETERS :
17 # -----------------
18 #
19 # MISSION_ID : NONE
20 #
21 # INSTRUMENT_ID : NONE
22 #
23 # DATASET_ID : tha-esa-l2i
24 # DATASET_NAME : ion full mode
25 # DATASET_SOURCE : CDPP/DDServer
26 # DATASET_GLOBAL_START : 2007-03-07T18:53:59.134
27 # DATASET_GLOBAL_STOP : 2017-11-04T18:35:25.907
28 # DATASET_MIN_SAMPLING : 96
29 # DATASET_MAX_SAMPLING : 385
30 #
31 # PARAMETER_ID : tha_ion_sp
32 # PARAMETER_NAME : tha_ion_sp
33 # PARAMETER_SHORT_NAME : spectra
34 # PARAMETER_UNITS : eV/(cm^2-s-sr-eV)
35 # PARAMETER_TENSOR_ORDER : 0
36 # PARAMETER_TABLE[0] : energy
37 # PARAMETER_TABLE_UNITS[0] : eV
38 # PARAMETER_TABLE_MIN_VALUES[0] : 5.00000,6.50000,8.70000
39 # PARAMETER_TABLE_MAX_VALUES[0] : 6.50000,8.70000,11.4000
40 # PARAMETER_FILL_VALUE : nan
41 # PARAMETER_UCD : phys.flux.density;phys.energy;phys.atmol.ionStage
42 #
43 #
44 # ---------------
45 # INTERVAL INFO :
46 # ---------------
47 # INTERVAL_START : 2012-11-06T09:13:31.000
48 # INTERVAL_STOP : 2012-11-06T09:21:00.000
49 #
50 # ------
51 # DATA :
52 # ------
53 # DATA_COLUMNS : AMDA_TIME, tha_ion_sp[0], tha_ion_sp[1], tha_ion_sp[2]
54 #
55 2012-11-06T09:14:35.000 16313.780 15405.838 8946.475
56 2012-11-06T09:16:10.000 12631.465 11957.925 18133.158
57 2012-11-06T09:17:45.000 8223.368 15026.249 10875.621
58 2012-11-06T09:19:20.000 27595.301 25617.533 24051.619
59 2012-11-06T09:20:55.000 12820.613 11179.109 19283.221 No newline at end of file
@@ -0,0 +1,59
1 # -----------
2 # AMDA INFO :
3 # -----------
4 # AMDA_ABOUT : Created by CDPP/AMDA(c)
5 # AMDA_VERSION : 3.5.0
6 # AMDA_ACKNOWLEDGEMENT : CDPP/AMDA Team
7 #
8 # --------------
9 # REQUEST INFO :
10 # --------------
11 # REQUEST_STRUCTURE : one-file-per-parameter-per-interval
12 # REQUEST_TIME_FORMAT : ISO 8601
13 # REQUEST_OUTPUT_PARAMS : tha_ion_sp
14 #
15 # -----------------
16 # BASE PARAMETERS :
17 # -----------------
18 #
19 # MISSION_ID : NONE
20 #
21 # INSTRUMENT_ID : NONE
22 #
23 # DATASET_ID : tha-esa-l2i
24 # DATASET_NAME : ion full mode
25 # DATASET_SOURCE : CDPP/DDServer
26 # DATASET_GLOBAL_START : 2007-03-07T18:53:59.134
27 # DATASET_GLOBAL_STOP : 2017-11-04T18:35:25.907
28 # DATASET_MIN_SAMPLING : 96
29 # DATASET_MAX_SAMPLING : 385
30 #
31 # PARAMETER_ID : tha_ion_sp
32 # PARAMETER_NAME : tha_ion_sp
33 # PARAMETER_SHORT_NAME : spectra
34 # PARAMETER_UNITS : eV/(cm^2-s-sr-eV)
35 # PARAMETER_TENSOR_ORDER : 0
36 # PARAMETER_TABLE[0] : energy
37 # PARAMETER_TABLE_UNITS[0] : eV
38 # PARAMETER_TABLE_MIN_VALUES[0] : 5.00000,6.50000,8.70000,11.4000
39 # PARAMETER_TABLE_MAX_VALUES[0] : 6.50000,8.70000,11.4000,14.6000
40 # PARAMETER_FILL_VALUE : nan
41 # PARAMETER_UCD : phys.flux.density;phys.energy;phys.atmol.ionStage
42 #
43 #
44 # ---------------
45 # INTERVAL INFO :
46 # ---------------
47 # INTERVAL_START : 2012-11-06T09:13:31.000
48 # INTERVAL_STOP : 2012-11-06T09:21:00.000
49 #
50 # ------
51 # DATA :
52 # ------
53 # DATA_COLUMNS : AMDA_TIME, tha_ion_sp[0], tha_ion_sp[1], tha_ion_sp[2], tha_ion_sp[3]
54 #
55 2012-11-06T09:14:35.000 16313.780 15405.838 8946.475 20907.664
56 2012-11-06T09:16:10.000 12631.465 11957.925 18133.158 32076.725
57 2012-11-06T09:17:45.000 8223.368 15026.249 10875.621 13008.381
58 2012-11-06T09:19:20.000 27595.301 25617.533 24051.619 13142.759
59 2012-11-06T09:20:55.000 12820.613 11179.109 19283.221 23226.998 No newline at end of file
@@ -0,0 +1,59
1 # -----------
2 # AMDA INFO :
3 # -----------
4 # AMDA_ABOUT : Created by CDPP/AMDA(c)
5 # AMDA_VERSION : 3.5.0
6 # AMDA_ACKNOWLEDGEMENT : CDPP/AMDA Team
7 #
8 # --------------
9 # REQUEST INFO :
10 # --------------
11 # REQUEST_STRUCTURE : one-file-per-parameter-per-interval
12 # REQUEST_TIME_FORMAT : ISO 8601
13 # REQUEST_OUTPUT_PARAMS : tha_ion_sp
14 #
15 # -----------------
16 # BASE PARAMETERS :
17 # -----------------
18 #
19 # MISSION_ID : NONE
20 #
21 # INSTRUMENT_ID : NONE
22 #
23 # DATASET_ID : tha-esa-l2i
24 # DATASET_NAME : ion full mode
25 # DATASET_SOURCE : CDPP/DDServer
26 # DATASET_GLOBAL_START : 2007-03-07T18:53:59.134
27 # DATASET_GLOBAL_STOP : 2017-11-04T18:35:25.907
28 # DATASET_MIN_SAMPLING : 96
29 # DATASET_MAX_SAMPLING : 385
30 #
31 # PARAMETER_ID : tha_ion_sp
32 # PARAMETER_NAME : tha_ion_sp
33 # PARAMETER_SHORT_NAME : spectra
34 # PARAMETER_UNITS : eV/(cm^2-s-sr-eV)
35 # PARAMETER_TENSOR_ORDER : 0
36 # PARAMETER_TABLE[0] : energy
37 # PARAMETER_TABLE_UNITS[0] : eV
38 # PARAMETER_TABLE_MIN_VALUES[0] : 8.70000,6.50000,11.4000,5.00000
39 # PARAMETER_TABLE_MAX_VALUES[0] : 11.4000,8.70000,14.6000,6.50000
40 # PARAMETER_FILL_VALUE : nan
41 # PARAMETER_UCD : phys.flux.density;phys.energy;phys.atmol.ionStage
42 #
43 #
44 # ---------------
45 # INTERVAL INFO :
46 # ---------------
47 # INTERVAL_START : 2012-11-06T09:13:31.000
48 # INTERVAL_STOP : 2012-11-06T09:21:00.000
49 #
50 # ------
51 # DATA :
52 # ------
53 # DATA_COLUMNS : AMDA_TIME, tha_ion_sp[0], tha_ion_sp[1], tha_ion_sp[2], tha_ion_sp[3]
54 #
55 2012-11-06T09:14:35.000 8946.475 15405.838 20907.664 16313.780
56 2012-11-06T09:16:10.000 18133.158 11957.925 32076.725 12631.465
57 2012-11-06T09:17:45.000 10875.621 15026.249 13008.381 8223.368
58 2012-11-06T09:19:20.000 24051.619 25617.533 13142.759 27595.301
59 2012-11-06T09:20:55.000 19283.221 11179.109 23226.998 12820.613 No newline at end of file
@@ -1,381 +1,422
1 1 #include "AmdaResultParser.h"
2 2
3 3 #include <Data/ScalarSeries.h>
4 4 #include <Data/SpectrogramSeries.h>
5 5 #include <Data/VectorSeries.h>
6 6
7 7 #include <QObject>
8 8 #include <QtTest>
9 9
10 10 namespace {
11 11
12 12 /// Path for the tests
13 13 const auto TESTS_RESOURCES_PATH
14 14 = QFileInfo{QString{AMDA_TESTS_RESOURCES_DIR}, "TestAmdaResultParser"}.absoluteFilePath();
15 15
16 16 QDateTime dateTime(int year, int month, int day, int hours, int minutes, int seconds)
17 17 {
18 18 return QDateTime{{year, month, day}, {hours, minutes, seconds}, Qt::UTC};
19 19 }
20 20
21 21 QString inputFilePath(const QString &inputFileName)
22 22 {
23 23 return QFileInfo{TESTS_RESOURCES_PATH, inputFileName}.absoluteFilePath();
24 24 }
25 25
26 26 template <typename T>
27 27 struct ExpectedResults {
28 28
29 29 ExpectedResults &setParsingOK(bool parsingOK)
30 30 {
31 31 m_ParsingOK = parsingOK;
32 32 return *this;
33 33 }
34 34
35 35 ExpectedResults &setXAxisUnit(Unit xAxisUnit)
36 36 {
37 37 m_XAxisUnit = std::move(xAxisUnit);
38 38 return *this;
39 39 }
40 40
41 41 ExpectedResults &setXAxisData(const QVector<QDateTime> &xAxisData)
42 42 {
43 43 m_XAxisData.clear();
44 44
45 45 // Converts QVector<QDateTime> to QVector<double>
46 46 std::transform(xAxisData.cbegin(), xAxisData.cend(), std::back_inserter(m_XAxisData),
47 47 [](const auto &dateTime) { return dateTime.toMSecsSinceEpoch() / 1000.; });
48 48
49 49 return *this;
50 50 }
51 51
52 52 ExpectedResults &setValuesUnit(Unit valuesUnit)
53 53 {
54 54 m_ValuesUnit = std::move(valuesUnit);
55 55 return *this;
56 56 }
57 57
58 58 ExpectedResults &setValuesData(QVector<double> valuesData)
59 59 {
60 60 m_ValuesData.clear();
61 61 m_ValuesData.push_back(std::move(valuesData));
62 62 return *this;
63 63 }
64 64
65 65 ExpectedResults &setValuesData(QVector<QVector<double> > valuesData)
66 66 {
67 67 m_ValuesData = std::move(valuesData);
68 68 return *this;
69 69 }
70 70
71 71 ExpectedResults &setYAxisEnabled(bool yAxisEnabled)
72 72 {
73 73 m_YAxisEnabled = yAxisEnabled;
74 74 return *this;
75 75 }
76 76
77 77 ExpectedResults &setYAxisUnit(Unit yAxisUnit)
78 78 {
79 79 m_YAxisUnit = std::move(yAxisUnit);
80 80 return *this;
81 81 }
82 82
83 83 ExpectedResults &setYAxisData(QVector<double> yAxisData)
84 84 {
85 85 m_YAxisData = std::move(yAxisData);
86 86 return *this;
87 87 }
88 88
89 89 /**
90 90 * Validates a DataSeries compared to the expected results
91 91 * @param results the DataSeries to validate
92 92 */
93 93 void validate(std::shared_ptr<IDataSeries> results)
94 94 {
95 95 if (m_ParsingOK) {
96 96 auto dataSeries = dynamic_cast<T *>(results.get());
97 97 if (dataSeries == nullptr) {
98 98
99 99 // No unit detected, parsink ok but data is nullptr
100 100 // TODO, improve the test to verify that the data is null
101 101 return;
102 102 }
103 103
104 104 // Checks units
105 105 QVERIFY(dataSeries->xAxisUnit() == m_XAxisUnit);
106 106 QVERIFY(dataSeries->valuesUnit() == m_ValuesUnit);
107 107
108 108 auto verifyRange = [dataSeries](const auto &expectedData, const auto &equalFun) {
109 109 QVERIFY(std::equal(dataSeries->cbegin(), dataSeries->cend(), expectedData.cbegin(),
110 110 expectedData.cend(),
111 111 [&equalFun](const auto &dataSeriesIt, const auto &expectedX) {
112 112 return equalFun(dataSeriesIt, expectedX);
113 113 }));
114 114 };
115 115
116 116 // Checks x-axis data
117 117 verifyRange(m_XAxisData, [](const auto &seriesIt, const auto &value) {
118 118 return seriesIt.x() == value;
119 119 });
120 120
121 121 // Checks values data of each component
122 122 for (auto i = 0; i < m_ValuesData.size(); ++i) {
123 123 verifyRange(m_ValuesData.at(i), [i](const auto &seriesIt, const auto &value) {
124 124 auto itValue = seriesIt.value(i);
125 125 return (std::isnan(itValue) && std::isnan(value)) || seriesIt.value(i) == value;
126 126 });
127 127 }
128 128
129 129 // Checks y-axis (if defined)
130 130 auto yAxis = dataSeries->yAxis();
131 131 QCOMPARE(yAxis.isDefined(), m_YAxisEnabled);
132 132
133 133 if (m_YAxisEnabled) {
134 134 // Unit
135 135 QCOMPARE(yAxis.unit(), m_YAxisUnit);
136 136
137 137 // Data
138 138 auto yAxisSize = yAxis.size();
139 139 QCOMPARE(yAxisSize, m_YAxisData.size());
140 140 for (auto i = 0; i < yAxisSize; ++i) {
141 141 QCOMPARE(yAxis.at(i), m_YAxisData.at(i));
142 142 }
143 143 }
144 144 }
145 145 else {
146 146 QVERIFY(results == nullptr);
147 147 }
148 148 }
149 149
150 150 // Parsing was successfully completed
151 151 bool m_ParsingOK{false};
152 152 // Expected x-axis unit
153 153 Unit m_XAxisUnit{};
154 154 // Expected x-axis data
155 155 QVector<double> m_XAxisData{};
156 156 // Expected values unit
157 157 Unit m_ValuesUnit{};
158 158 // Expected values data
159 159 QVector<QVector<double> > m_ValuesData{};
160 160 // Expected data series has y-axis
161 161 bool m_YAxisEnabled{false};
162 162 // Expected y-axis unit (if axis defined)
163 163 Unit m_YAxisUnit{};
164 164 // Expected y-axis data (if axis defined)
165 165 QVector<double> m_YAxisData{};
166 166 };
167 167
168 168 } // namespace
169 169
170 170 Q_DECLARE_METATYPE(ExpectedResults<ScalarSeries>)
171 171 Q_DECLARE_METATYPE(ExpectedResults<SpectrogramSeries>)
172 172 Q_DECLARE_METATYPE(ExpectedResults<VectorSeries>)
173 173
174 174 class TestAmdaResultParser : public QObject {
175 175 Q_OBJECT
176 176 private:
177 177 template <typename T>
178 178 void testReadDataStructure()
179 179 {
180 180 // ////////////// //
181 181 // Test structure //
182 182 // ////////////// //
183 183
184 184 // Name of TXT file to read
185 185 QTest::addColumn<QString>("inputFileName");
186 186 // Expected results
187 187 QTest::addColumn<ExpectedResults<T> >("expectedResults");
188 188 }
189 189
190 190 template <typename T>
191 191 void testRead(AmdaResultParser::ValueType valueType)
192 192 {
193 193 QFETCH(QString, inputFileName);
194 194 QFETCH(ExpectedResults<T>, expectedResults);
195 195
196 196 // Parses file
197 197 auto filePath = inputFilePath(inputFileName);
198 198 auto results = AmdaResultParser::readTxt(filePath, valueType);
199 199
200 200 // ///////////////// //
201 201 // Validates results //
202 202 // ///////////////// //
203 203 expectedResults.validate(results);
204 204 }
205 205
206 206 private slots:
207 207 /// Input test data
208 208 /// @sa testReadScalarTxt()
209 209 void testReadScalarTxt_data();
210 210
211 211 /// Tests parsing scalar series of a TXT file
212 212 void testReadScalarTxt();
213 213
214 214 /// Input test data
215 215 /// @sa testReadSpectrogramTxt()
216 216 void testReadSpectrogramTxt_data();
217 217
218 218 /// Tests parsing spectrogram series of a TXT file
219 219 void testReadSpectrogramTxt();
220 220
221 221 /// Input test data
222 222 /// @sa testReadVectorTxt()
223 223 void testReadVectorTxt_data();
224 224
225 225 /// Tests parsing vector series of a TXT file
226 226 void testReadVectorTxt();
227 227 };
228 228
229 229 void TestAmdaResultParser::testReadScalarTxt_data()
230 230 {
231 231 testReadDataStructure<ScalarSeries>();
232 232
233 233 // ////////// //
234 234 // Test cases //
235 235 // ////////// //
236 236
237 237 // Valid files
238 238 QTest::newRow("Valid file")
239 239 << QStringLiteral("ValidScalar1.txt")
240 240 << ExpectedResults<ScalarSeries>{}
241 241 .setParsingOK(true)
242 242 .setXAxisUnit(Unit{"nT", true})
243 243 .setXAxisData({dateTime(2013, 9, 23, 9, 0, 30), dateTime(2013, 9, 23, 9, 1, 30),
244 244 dateTime(2013, 9, 23, 9, 2, 30), dateTime(2013, 9, 23, 9, 3, 30),
245 245 dateTime(2013, 9, 23, 9, 4, 30), dateTime(2013, 9, 23, 9, 5, 30),
246 246 dateTime(2013, 9, 23, 9, 6, 30), dateTime(2013, 9, 23, 9, 7, 30),
247 247 dateTime(2013, 9, 23, 9, 8, 30), dateTime(2013, 9, 23, 9, 9, 30)})
248 248 .setValuesData({-2.83950, -2.71850, -2.52150, -2.57633, -2.58050, -2.48325, -2.63025,
249 249 -2.55800, -2.43250, -2.42200});
250 250
251 251 QTest::newRow("Valid file (value of first line is invalid but it is converted to NaN")
252 252 << QStringLiteral("WrongValue.txt")
253 253 << ExpectedResults<ScalarSeries>{}
254 254 .setParsingOK(true)
255 255 .setXAxisUnit(Unit{"nT", true})
256 256 .setXAxisData({dateTime(2013, 9, 23, 9, 0, 30), dateTime(2013, 9, 23, 9, 1, 30),
257 257 dateTime(2013, 9, 23, 9, 2, 30)})
258 258 .setValuesData({std::numeric_limits<double>::quiet_NaN(), -2.71850, -2.52150});
259 259
260 260 QTest::newRow("Valid file that contains NaN values")
261 261 << QStringLiteral("NaNValue.txt")
262 262 << ExpectedResults<ScalarSeries>{}
263 263 .setParsingOK(true)
264 264 .setXAxisUnit(Unit{("nT"), true})
265 265 .setXAxisData({dateTime(2013, 9, 23, 9, 0, 30), dateTime(2013, 9, 23, 9, 1, 30),
266 266 dateTime(2013, 9, 23, 9, 2, 30)})
267 267 .setValuesData({std::numeric_limits<double>::quiet_NaN(), -2.71850, -2.52150});
268 268
269 269 // Valid files but with some invalid lines (wrong unit, wrong values, etc.)
270 270 QTest::newRow("No unit file")
271 271 << QStringLiteral("NoUnit.txt")
272 272 << ExpectedResults<ScalarSeries>{}.setParsingOK(true).setXAxisUnit(Unit{"", true});
273 273
274 274 QTest::newRow("Wrong unit file")
275 275 << QStringLiteral("WrongUnit.txt")
276 276 << ExpectedResults<ScalarSeries>{}
277 277 .setParsingOK(true)
278 278 .setXAxisUnit(Unit{"", true})
279 279 .setXAxisData({dateTime(2013, 9, 23, 9, 0, 30), dateTime(2013, 9, 23, 9, 1, 30),
280 280 dateTime(2013, 9, 23, 9, 2, 30)})
281 281 .setValuesData({-2.83950, -2.71850, -2.52150});
282 282
283 283 QTest::newRow("Wrong results file (date of first line is invalid")
284 284 << QStringLiteral("WrongDate.txt")
285 285 << ExpectedResults<ScalarSeries>{}
286 286 .setParsingOK(true)
287 287 .setXAxisUnit(Unit{"nT", true})
288 288 .setXAxisData({dateTime(2013, 9, 23, 9, 1, 30), dateTime(2013, 9, 23, 9, 2, 30)})
289 289 .setValuesData({-2.71850, -2.52150});
290 290
291 291 QTest::newRow("Wrong results file (too many values for first line")
292 292 << QStringLiteral("TooManyValues.txt")
293 293 << ExpectedResults<ScalarSeries>{}
294 294 .setParsingOK(true)
295 295 .setXAxisUnit(Unit{"nT", true})
296 296 .setXAxisData({dateTime(2013, 9, 23, 9, 1, 30), dateTime(2013, 9, 23, 9, 2, 30)})
297 297 .setValuesData({-2.71850, -2.52150});
298 298
299 299 QTest::newRow("Wrong results file (x of first line is NaN")
300 300 << QStringLiteral("NaNX.txt")
301 301 << ExpectedResults<ScalarSeries>{}
302 302 .setParsingOK(true)
303 303 .setXAxisUnit(Unit{"nT", true})
304 304 .setXAxisData({dateTime(2013, 9, 23, 9, 1, 30), dateTime(2013, 9, 23, 9, 2, 30)})
305 305 .setValuesData({-2.71850, -2.52150});
306 306
307 307 QTest::newRow("Invalid file type (vector)")
308 308 << QStringLiteral("ValidVector1.txt")
309 309 << ExpectedResults<ScalarSeries>{}.setParsingOK(true).setXAxisUnit(Unit{"nT", true});
310 310
311 311 // Invalid files
312 312 QTest::newRow("Invalid file (unexisting file)")
313 313 << QStringLiteral("UnexistingFile.txt")
314 314 << ExpectedResults<ScalarSeries>{}.setParsingOK(false);
315 315
316 316 QTest::newRow("Invalid file (file not found on server)")
317 317 << QStringLiteral("FileNotFound.txt")
318 318 << ExpectedResults<ScalarSeries>{}.setParsingOK(false);
319 319 }
320 320
321 321 void TestAmdaResultParser::testReadScalarTxt()
322 322 {
323 323 testRead<ScalarSeries>(AmdaResultParser::ValueType::SCALAR);
324 324 }
325 325
326 326 void TestAmdaResultParser::testReadSpectrogramTxt_data()
327 327 {
328 328 testReadDataStructure<SpectrogramSeries>();
329 329
330 330 // ////////// //
331 331 // Test cases //
332 332 // ////////// //
333 333
334 // Valid files
335 QTest::newRow("Valid file (three bands)")
336 << QStringLiteral("spectro/ValidSpectrogram1.txt")
337 << ExpectedResults<SpectrogramSeries>{}
338 .setParsingOK(true)
339 .setXAxisUnit(Unit{"t", true})
340 .setXAxisData({dateTime(2012, 11, 6, 9, 14, 35), dateTime(2012, 11, 6, 9, 16, 10),
341 dateTime(2012, 11, 6, 9, 17, 45), dateTime(2012, 11, 6, 9, 19, 20),
342 dateTime(2012, 11, 6, 9, 20, 55)})
343 .setYAxisEnabled(true)
344 .setYAxisUnit(Unit{"eV"})
345 .setYAxisData({5.75, 7.6, 10.05}) // middle of the intervals of each band
346 .setValuesUnit(Unit{"eV/(cm^2-s-sr-eV)"})
347 .setValuesData(QVector<QVector<double> >{
348 {16313.780, 12631.465, 8223.368, 27595.301, 12820.613},
349 {15405.838, 11957.925, 15026.249, 25617.533, 11179.109},
350 {8946.475, 18133.158, 10875.621, 24051.619, 19283.221}});
351
352 auto fourBandsResult
353 = ExpectedResults<SpectrogramSeries>{}
354 .setParsingOK(true)
355 .setXAxisUnit(Unit{"t", true})
356 .setXAxisData({dateTime(2012, 11, 6, 9, 14, 35), dateTime(2012, 11, 6, 9, 16, 10),
357 dateTime(2012, 11, 6, 9, 17, 45), dateTime(2012, 11, 6, 9, 19, 20),
358 dateTime(2012, 11, 6, 9, 20, 55)})
359 .setYAxisEnabled(true)
360 .setYAxisUnit(Unit{"eV"})
361 .setYAxisData({5.75, 7.6, 10.05, 13.}) // middle of the intervals of each band
362 .setValuesUnit(Unit{"eV/(cm^2-s-sr-eV)"})
363 .setValuesData(QVector<QVector<double> >{
364 {16313.780, 12631.465, 8223.368, 27595.301, 12820.613},
365 {15405.838, 11957.925, 15026.249, 25617.533, 11179.109},
366 {8946.475, 18133.158, 10875.621, 24051.619, 19283.221},
367 {20907.664, 32076.725, 13008.381, 13142.759, 23226.998}});
368
369 QTest::newRow("Valid file (four bands)")
370 << QStringLiteral("spectro/ValidSpectrogram2.txt") << fourBandsResult;
371 QTest::newRow("Valid file (four unsorted bands)")
372 << QStringLiteral("spectro/ValidSpectrogram3.txt")
373 << fourBandsResult; // Bands and values are sorted
374
334 375 }
335 376
336 377 void TestAmdaResultParser::testReadSpectrogramTxt()
337 378 {
338 379 testRead<SpectrogramSeries>(AmdaResultParser::ValueType::SPECTROGRAM);
339 380 }
340 381
341 382 void TestAmdaResultParser::testReadVectorTxt_data()
342 383 {
343 384 testReadDataStructure<VectorSeries>();
344 385
345 386 // ////////// //
346 387 // Test cases //
347 388 // ////////// //
348 389
349 390 // Valid files
350 391 QTest::newRow("Valid file")
351 392 << QStringLiteral("ValidVector1.txt")
352 393 << ExpectedResults<VectorSeries>{}
353 394 .setParsingOK(true)
354 395 .setXAxisUnit(Unit{"nT", true})
355 396 .setXAxisData({dateTime(2013, 7, 2, 9, 13, 50), dateTime(2013, 7, 2, 9, 14, 6),
356 397 dateTime(2013, 7, 2, 9, 14, 22), dateTime(2013, 7, 2, 9, 14, 38),
357 398 dateTime(2013, 7, 2, 9, 14, 54), dateTime(2013, 7, 2, 9, 15, 10),
358 399 dateTime(2013, 7, 2, 9, 15, 26), dateTime(2013, 7, 2, 9, 15, 42),
359 400 dateTime(2013, 7, 2, 9, 15, 58), dateTime(2013, 7, 2, 9, 16, 14)})
360 401 .setValuesData(
361 402 {{-0.332, -1.011, -1.457, -1.293, -1.217, -1.443, -1.278, -1.202, -1.22, -1.259},
362 403 {3.206, 2.999, 2.785, 2.736, 2.612, 2.564, 2.892, 2.862, 2.859, 2.764},
363 404 {0.058, 0.496, 1.018, 1.485, 1.662, 1.505, 1.168, 1.244, 1.15, 1.358}});
364 405
365 406 // Valid files but with some invalid lines (wrong unit, wrong values, etc.)
366 407 QTest::newRow("Invalid file type (scalar)")
367 408 << QStringLiteral("ValidScalar1.txt")
368 409 << ExpectedResults<VectorSeries>{}
369 410 .setParsingOK(true)
370 411 .setXAxisUnit(Unit{"nT", true})
371 412 .setXAxisData({})
372 413 .setValuesData(QVector<QVector<double> >{{}, {}, {}});
373 414 }
374 415
375 416 void TestAmdaResultParser::testReadVectorTxt()
376 417 {
377 418 testRead<VectorSeries>(AmdaResultParser::ValueType::VECTOR);
378 419 }
379 420
380 421 QTEST_MAIN(TestAmdaResultParser)
381 422 #include "TestAmdaResultParser.moc"
General Comments 0
You need to be logged in to leave comments. Login now