From dd1f5aa68a133d4498f23ac0f23add1c0e73da04 Mon Sep 17 00:00:00 2001 From: Denis Gofman <denis@vikingsoftware.com> Date: Fri, 2 Feb 2024 11:43:05 +0100 Subject: [PATCH] Unit test for topohelp::geom::polygon --- .../topohelper/geometry/tst_polygon.cpp | 49 +++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/tests/unittests/topohelper/geometry/tst_polygon.cpp b/tests/unittests/topohelper/geometry/tst_polygon.cpp index 869da9b365..a9b5229a93 100644 --- a/tests/unittests/topohelper/geometry/tst_polygon.cpp +++ b/tests/unittests/topohelper/geometry/tst_polygon.cpp @@ -30,13 +30,56 @@ class TestPolygon : public QObject private slots: void testPolygon_data() { - QSKIP("Not implemented yet"); + QTest::addColumn<QVector<qint32>>("coordinates"); + QTest::addColumn<PointsList>("expectedResult"); + + auto fillPoints = [](int count) { + PointsList points; + constexpr int step = 10; + + int counter = 0; + for (int i = 0; i < count; ++i) { + points << QPointF(counter, counter + step); + counter += 2 * step; + } + return points; + }; + + constexpr int MaxPointCount = 10; + + for (int i = 0; i < MaxPointCount; ++i) { + const QString &validCaseName = QString("ValidPoints%1").arg(i); + + const PointsList &validPoints = fillPoints(i); + QVector<qint32> validNumbers; + + for (const auto &pointF : validPoints) { + const QPoint &point = pointF.toPoint(); + validNumbers << point.x() << point.y(); + } + + QTest::newRow(validCaseName.toUtf8().data()) << validNumbers << validPoints; + +#ifdef QT_NO_DEBUG + const QString &invalidCaseName = QString("InvalidPoints%1").arg(i); + QVector<qint32> invalidNumbers(validNumbers); + if (!invalidNumbers.isEmpty()) { + invalidNumbers.takeLast(); + } + + QTest::newRow(invalidCaseName.toUtf8().data()) << invalidNumbers << PointsList(); +#endif + } } void testPolygon() { - QSKIP("Not implemented yet"); - // const auto &actualResult = polygon(replaceMe); + QFETCH(QVector<qint32>, coordinates); + QFETCH(PointsList, expectedResult); + + const auto &actualResult = polygon(coordinates); + + QCOMPARE(actualResult, expectedResult); } }; -- GitLab