@@ -22,6 +22,20 void validateRange(DataSeriesIterator first, DataSeriesIterator last, const QVec | |||||
22 | [](const auto &it, const auto &expectedVal) { return it.value() == expectedVal; })); |
|
22 | [](const auto &it, const auto &expectedVal) { return it.value() == expectedVal; })); | |
23 | } |
|
23 | } | |
24 |
|
24 | |||
|
25 | void validateRange(DataSeriesIterator first, DataSeriesIterator last, const QVector<double> &xData, | |||
|
26 | const QVector<QVector<double> > &valuesData) | |||
|
27 | { | |||
|
28 | QVERIFY(std::equal(first, last, xData.cbegin(), xData.cend(), | |||
|
29 | [](const auto &it, const auto &expectedX) { return it.x() == expectedX; })); | |||
|
30 | for (auto i = 0; i < valuesData.size(); ++i) { | |||
|
31 | auto componentData = valuesData.at(i); | |||
|
32 | ||||
|
33 | QVERIFY(std::equal( | |||
|
34 | first, last, componentData.cbegin(), componentData.cend(), | |||
|
35 | [i](const auto &it, const auto &expectedVal) { return it.value(i) == expectedVal; })); | |||
|
36 | } | |||
|
37 | } | |||
|
38 | ||||
25 | } // namespace |
|
39 | } // namespace | |
26 |
|
40 | |||
27 | class TestDataSeries : public QObject { |
|
41 | class TestDataSeries : public QObject { | |
@@ -75,7 +89,42 private: | |||||
75 | } |
|
89 | } | |
76 | } |
|
90 | } | |
77 |
|
91 | |||
|
92 | template <typename T> | |||
|
93 | void testPurgeStructure() | |||
|
94 | { | |||
|
95 | // ////////////// // | |||
|
96 | // Test structure // | |||
|
97 | // ////////////// // | |||
|
98 | ||||
|
99 | // Data series to purge | |||
|
100 | QTest::addColumn<std::shared_ptr<T> >("dataSeries"); | |||
|
101 | QTest::addColumn<double>("min"); | |||
|
102 | QTest::addColumn<double>("max"); | |||
|
103 | ||||
|
104 | // Expected values after purge | |||
|
105 | QTest::addColumn<QVector<double> >("expectedXAxisData"); | |||
|
106 | QTest::addColumn<QVector<QVector<double> > >("expectedValuesData"); | |||
|
107 | } | |||
|
108 | ||||
|
109 | template <typename T> | |||
|
110 | void testPurge() | |||
|
111 | { | |||
|
112 | QFETCH(std::shared_ptr<T>, dataSeries); | |||
|
113 | QFETCH(double, min); | |||
|
114 | QFETCH(double, max); | |||
|
115 | ||||
|
116 | dataSeries->purge(min, max); | |||
|
117 | ||||
|
118 | // Validates results | |||
|
119 | QFETCH(QVector<double>, expectedXAxisData); | |||
|
120 | QFETCH(QVector<QVector<double> >, expectedValuesData); | |||
|
121 | ||||
|
122 | validateRange(dataSeries->cbegin(), dataSeries->cend(), expectedXAxisData, | |||
|
123 | expectedValuesData); | |||
|
124 | } | |||
|
125 | ||||
78 | private slots: |
|
126 | private slots: | |
|
127 | ||||
79 | /// Input test data |
|
128 | /// Input test data | |
80 | /// @sa testCtor() |
|
129 | /// @sa testCtor() | |
81 | void testCtor_data(); |
|
130 | void testCtor_data(); | |
@@ -91,6 +140,20 private slots: | |||||
91 | void testMerge(); |
|
140 | void testMerge(); | |
92 |
|
141 | |||
93 | /// Input test data |
|
142 | /// Input test data | |
|
143 | /// @sa testPurgeScalar() | |||
|
144 | void testPurgeScalar_data(); | |||
|
145 | ||||
|
146 | /// Tests purge of a scalar series | |||
|
147 | void testPurgeScalar(); | |||
|
148 | ||||
|
149 | /// Input test data | |||
|
150 | /// @sa testPurgeVector() | |||
|
151 | void testPurgeVector_data(); | |||
|
152 | ||||
|
153 | /// Tests purge of a vector series | |||
|
154 | void testPurgeVector(); | |||
|
155 | ||||
|
156 | /// Input test data | |||
94 | /// @sa testMinXAxisData() |
|
157 | /// @sa testMinXAxisData() | |
95 | void testMinXAxisData_data(); |
|
158 | void testMinXAxisData_data(); | |
96 |
|
159 | |||
@@ -261,6 +324,62 void TestDataSeries::testMerge() | |||||
261 | validateRange(dataSeries->cbegin(), dataSeries->cend(), expectedXAxisData, expectedValuesData); |
|
324 | validateRange(dataSeries->cbegin(), dataSeries->cend(), expectedXAxisData, expectedValuesData); | |
262 | } |
|
325 | } | |
263 |
|
326 | |||
|
327 | void TestDataSeries::testPurgeScalar_data() | |||
|
328 | { | |||
|
329 | testPurgeStructure<ScalarSeries>(); | |||
|
330 | ||||
|
331 | // ////////// // | |||
|
332 | // Test cases // | |||
|
333 | // ////////// // | |||
|
334 | ||||
|
335 | QTest::newRow("purgeScalar") << createScalarSeries({1., 2., 3., 4., 5.}, | |||
|
336 | {100., 200., 300., 400., 500.}) | |||
|
337 | << 2. << 4. << QVector<double>{2., 3., 4.} | |||
|
338 | << QVector<QVector<double> >{{200., 300., 400.}}; | |||
|
339 | QTest::newRow("purgeScalar2") << createScalarSeries({1., 2., 3., 4., 5.}, | |||
|
340 | {100., 200., 300., 400., 500.}) | |||
|
341 | << 0. << 2.5 << QVector<double>{1., 2.} | |||
|
342 | << QVector<QVector<double> >{{100., 200.}}; | |||
|
343 | QTest::newRow("purgeScalar3") << createScalarSeries({1., 2., 3., 4., 5.}, | |||
|
344 | {100., 200., 300., 400., 500.}) | |||
|
345 | << 3.5 << 7. << QVector<double>{4., 5.} | |||
|
346 | << QVector<QVector<double> >{{400., 500.}}; | |||
|
347 | QTest::newRow("purgeScalar4") << createScalarSeries({1., 2., 3., 4., 5.}, | |||
|
348 | {100., 200., 300., 400., 500.}) | |||
|
349 | << 0. << 7. << QVector<double>{1., 2., 3., 4., 5.} | |||
|
350 | << QVector<QVector<double> >{{100., 200., 300., 400., 500.}}; | |||
|
351 | QTest::newRow("purgeScalar5") << createScalarSeries({1., 2., 3., 4., 5.}, | |||
|
352 | {100., 200., 300., 400., 500.}) | |||
|
353 | << 5.5 << 7. << QVector<double>{} | |||
|
354 | << QVector<QVector<double> >{{}}; | |||
|
355 | } | |||
|
356 | ||||
|
357 | void TestDataSeries::testPurgeScalar() | |||
|
358 | { | |||
|
359 | testPurge<ScalarSeries>(); | |||
|
360 | } | |||
|
361 | ||||
|
362 | void TestDataSeries::testPurgeVector_data() | |||
|
363 | { | |||
|
364 | testPurgeStructure<VectorSeries>(); | |||
|
365 | ||||
|
366 | // ////////// // | |||
|
367 | // Test cases // | |||
|
368 | // ////////// // | |||
|
369 | ||||
|
370 | QTest::newRow("purgeVector") << createVectorSeries({1., 2., 3., 4., 5.}, {6., 7., 8., 9., 10.}, | |||
|
371 | {11., 12., 13., 14., 15.}, | |||
|
372 | {16., 17., 18., 19., 20.}) | |||
|
373 | << 2. << 4. << QVector<double>{2., 3., 4.} | |||
|
374 | << QVector<QVector<double> >{ | |||
|
375 | {7., 8., 9.}, {12., 13., 14.}, {17., 18., 19.}}; | |||
|
376 | } | |||
|
377 | ||||
|
378 | void TestDataSeries::testPurgeVector() | |||
|
379 | { | |||
|
380 | testPurge<VectorSeries>(); | |||
|
381 | } | |||
|
382 | ||||
264 | void TestDataSeries::testMinXAxisData_data() |
|
383 | void TestDataSeries::testMinXAxisData_data() | |
265 | { |
|
384 | { | |
266 | // ////////////// // |
|
385 | // ////////////// // |
General Comments 0
You need to be logged in to leave comments.
Login now