diff --git a/core/tests/Data/TestDataSeriesUtils.cpp b/core/tests/Data/TestDataSeriesUtils.cpp index 3e4bd90..a0854fa 100644 --- a/core/tests/Data/TestDataSeriesUtils.cpp +++ b/core/tests/Data/TestDataSeriesUtils.cpp @@ -18,6 +18,8 @@ void TestDataSeriesUtils::testFillDataHoles_data() QTest::addColumn >("valuesData"); QTest::addColumn("resolution"); QTest::addColumn("fillValue"); + QTest::addColumn("minBound"); + QTest::addColumn("maxBound"); QTest::addColumn >( "expectedXAxisData"); // expected x-axis data after filling holes QTest::addColumn >( @@ -27,34 +29,50 @@ void TestDataSeriesUtils::testFillDataHoles_data() QTest::newRow("fillDataHoles (basic case)") << std::vector{0., 1., 5., 7., 14.} << std::vector{0., 1., 2., 3., 4.} << 2. - << nan << std::vector{0., 1., 3., 5., 7., 9., 11., 13., 14.} + << nan << nan << nan << std::vector{0., 1., 3., 5., 7., 9., 11., 13., 14.} << std::vector{0., 1., nan, 2., 3., nan, nan, nan, 4.}; QTest::newRow("fillDataHoles (change nb components)") << std::vector{0., 1., 5., 7., 14.} - << std::vector{0., 1., 2., 3., 4., 5., 6., 7., 8., 9.} << 2. << nan + << std::vector{0., 1., 2., 3., 4., 5., 6., 7., 8., 9.} << 2. << nan << nan << nan << std::vector{0., 1., 3., 5., 7., 9., 11., 13., 14.} << std::vector{0., 1., 2., 3., nan, nan, 4., 5., 6., 7., nan, nan, nan, nan, nan, nan, 8., 9.}; QTest::newRow("fillDataHoles (change resolution)") << std::vector{0., 1., 5., 7., 14.} << std::vector{0., 1., 2., 3., 4.} - << 1.5 << nan << std::vector{0., 1., 2.5, 4., 5., 6.5, 7., 8.5, 10., 11.5, 13., 14.} + << 1.5 << nan << nan << nan + << std::vector{0., 1., 2.5, 4., 5., 6.5, 7., 8.5, 10., 11.5, 13., 14.} << std::vector{0., 1., nan, nan, 2., nan, 3., nan, nan, nan, nan, 4.}; QTest::newRow("fillDataHoles (with no data (no changes made))") - << std::vector{} << std::vector{} << 2. << nan << std::vector{} - << std::vector{}; + << std::vector{} << std::vector{} << 2. << nan << nan << nan + << std::vector{} << std::vector{}; QTest::newRow("fillDataHoles (with no resolution (no changes made))") << std::vector{0., 1., 5., 7., 14.} << std::vector{0., 1., 2., 3., 4.} << 0. - << nan << std::vector{0., 1., 5., 7., 14.} + << nan << nan << nan << std::vector{0., 1., 5., 7., 14.} << std::vector{0., 1., 2., 3., 4.}; QTest::newRow("fillDataHoles (change fill value)") << std::vector{0., 1., 5., 7., 14.} << std::vector{0., 1., 2., 3., 4.} << 2. - << -1. << std::vector{0., 1., 3., 5., 7., 9., 11., 13., 14.} + << -1. << nan << nan << std::vector{0., 1., 3., 5., 7., 9., 11., 13., 14.} << std::vector{0., 1., -1., 2., 3., -1., -1., -1., 4.}; + + QTest::newRow("fillDataHoles (add data holes to the beginning)") + << std::vector{5., 7., 9., 11., 13.} << std::vector{0., 1., 2., 3., 4.} + << 2. << nan << 0. << nan << std::vector{1., 3., 5., 7., 9., 11., 13.} + << std::vector{nan, nan, 0., 1., 2., 3., 4.}; + + QTest::newRow("fillDataHoles (add data holes to the end)") + << std::vector{5., 7., 9., 11., 13.} << std::vector{0., 1., 2., 3., 4.} + << 2. << nan << nan << 21. << std::vector{5., 7., 9., 11., 13., 15., 17., 19., 21.} + << std::vector{0., 1., 2., 3., 4., nan, nan, nan, nan}; + + QTest::newRow("fillDataHoles (invalid min/max bounds (no changes made))") + << std::vector{5., 7., 9., 11., 13.} << std::vector{0., 1., 2., 3., 4.} + << 2. << nan << 8. << 13. << std::vector{5., 7., 9., 11., 13.} + << std::vector{0., 1., 2., 3., 4.}; } void TestDataSeriesUtils::testFillDataHoles() @@ -63,12 +81,15 @@ void TestDataSeriesUtils::testFillDataHoles() QFETCH(std::vector, valuesData); QFETCH(double, resolution); QFETCH(double, fillValue); + QFETCH(double, minBound); + QFETCH(double, maxBound); QFETCH(std::vector, expectedXAxisData); QFETCH(std::vector, expectedValuesData); // Executes method (xAxisData and valuesData are modified) - DataSeriesUtils::fillDataHoles(xAxisData, valuesData, resolution, fillValue); + DataSeriesUtils::fillDataHoles(xAxisData, valuesData, resolution, fillValue, minBound, + maxBound); // Checks results auto equal = [](const auto &data, const auto &expectedData) {