@@ -22,6 +22,20 void validateRange(DataSeriesIterator first, DataSeriesIterator last, const QVec | |||
|
22 | 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 | 39 | } // namespace |
|
26 | 40 | |
|
27 | 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 | 126 | private slots: |
|
127 | ||
|
79 | 128 | /// Input test data |
|
80 | 129 | /// @sa testCtor() |
|
81 | 130 | void testCtor_data(); |
@@ -91,6 +140,20 private slots: | |||
|
91 | 140 | void testMerge(); |
|
92 | 141 | |
|
93 | 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 | 157 | /// @sa testMinXAxisData() |
|
95 | 158 | void testMinXAxisData_data(); |
|
96 | 159 | |
@@ -261,6 +324,62 void TestDataSeries::testMerge() | |||
|
261 | 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 | 383 | void TestDataSeries::testMinXAxisData_data() |
|
265 | 384 | { |
|
266 | 385 | // ////////////// // |
General Comments 0
You need to be logged in to leave comments.
Login now