diff --git a/core/tests/Data/TestOneDimArrayData.cpp b/core/tests/Data/TestOneDimArrayData.cpp index b184a68..6bda43e 100644 --- a/core/tests/Data/TestOneDimArrayData.cpp +++ b/core/tests/Data/TestOneDimArrayData.cpp @@ -21,8 +21,31 @@ private slots: void testSize_data(); void testSize(); + /// Tests @sa ArrayData::sort() + void testSort_data(); + void testSort(); }; +void TestOneDimArrayData::testData_data() +{ + // Test structure + QTest::addColumn >("inputData"); // array's data input + QTest::addColumn >("expectedData"); // expected data + + // Test cases + QTest::newRow("data1") << QVector{1., 2., 3., 4., 5.} + << QVector{1., 2., 3., 4., 5.}; +} + +void TestOneDimArrayData::testData() +{ + QFETCH(QVector, inputData); + QFETCH(QVector, expectedData); + + ArrayData<1> arrayData{inputData}; + QVERIFY(arrayData.data() == expectedData); +} + void TestOneDimArrayData::testDataByComponentIndex_data() { // Test structure @@ -107,5 +130,31 @@ void TestOneDimArrayData::testSize() QVERIFY(arrayData.size() == expectedSize); } +void TestOneDimArrayData::testSort_data() +{ + // Test structure + QTest::addColumn >("inputData"); // array data's input + QTest::addColumn >("sortPermutation"); // permutation used to sort data + QTest::addColumn >("expectedData"); // expected data after sorting + + // Test cases + QTest::newRow("data1") << QVector{1., 2., 3., 4., 5.} << std::vector{0, 2, 3, 1, 4} + << QVector{1., 3., 4., 2., 5.}; + QTest::newRow("data2") << QVector{1., 2., 3., 4., 5.} << std::vector{4, 1, 2, 3, 0} + << QVector{5., 2., 3., 4., 1.}; +} + +void TestOneDimArrayData::testSort() +{ + QFETCH(QVector, inputData); + QFETCH(std::vector, sortPermutation); + QFETCH(QVector, expectedData); + + ArrayData<1> arrayData{inputData}; + auto sortedArrayData = arrayData.sort(sortPermutation); + QVERIFY(sortedArrayData); + QVERIFY(sortedArrayData->data() == expectedData); +} + QTEST_MAIN(TestOneDimArrayData) #include "TestOneDimArrayData.moc" diff --git a/core/tests/Data/TestTwoDimArrayData.cpp b/core/tests/Data/TestTwoDimArrayData.cpp index 672e471..2f6cb7b 100644 --- a/core/tests/Data/TestTwoDimArrayData.cpp +++ b/core/tests/Data/TestTwoDimArrayData.cpp @@ -23,6 +23,9 @@ private slots: void testSize_data(); void testSize(); + /// Tests @sa ArrayData::sort() + void testSort_data(); + void testSort(); }; void TestTwoDimArrayData::testDataByComponentIndex_data() @@ -142,5 +145,38 @@ void TestTwoDimArrayData::testSize() QVERIFY(arrayData.size() == expectedSize); } +void TestTwoDimArrayData::testSort_data() +{ + // Test structure + QTest::addColumn("inputData"); // array data's input + QTest::addColumn >("sortPermutation"); // permutation used to sort data + QTest::addColumn("expectedData"); // expected data after sorting + + // Test cases + QTest::newRow("data1") + << DataContainer{{1., 2., 3., 4., 5.}, {6., 7., 8., 9., 10.}, {11., 12., 13., 14., 15.}} + << std::vector{0, 2, 3, 1, 4} + << DataContainer{{1., 3., 4., 2., 5.}, {6., 8., 9., 7., 10.}, {11., 13., 14., 12., 15.}}; + QTest::newRow("data2") + << DataContainer{{1., 2., 3., 4., 5.}, {6., 7., 8., 9., 10.}, {11., 12., 13., 14., 15.}} + << std::vector{2, 4, 3, 0, 1} + << DataContainer{{3., 5., 4., 1., 2.}, {8., 10., 9., 6., 7.}, {13., 15., 14., 11., 12.}}; +} + +void TestTwoDimArrayData::testSort() +{ + QFETCH(DataContainer, inputData); + QFETCH(std::vector, sortPermutation); + QFETCH(DataContainer, expectedData); + + ArrayData<2> arrayData{inputData}; + auto sortedArrayData = arrayData.sort(sortPermutation); + QVERIFY(sortedArrayData); + + for (auto i = 0; i < expectedData.size(); ++i) { + QVERIFY(sortedArrayData->data(i) == expectedData.at(i)); + } +} + QTEST_MAIN(TestTwoDimArrayData) #include "TestTwoDimArrayData.moc"