From 8010be9de2c4855cd9621cc2052b222dcec92192 Mon Sep 17 00:00:00 2001 From: Laurent Montel Date: Tue, 9 Apr 2024 15:27:39 +0200 Subject: [PATCH] Add qpolygonF autotest --- tests/qt_types_standalone/CMakeLists.txt | 1 + tests/qt_types_standalone/cpp/main.cpp | 2 ++ tests/qt_types_standalone/cpp/qpolygonf.h | 35 +++++++++++++++++++ tests/qt_types_standalone/rust/build.rs | 1 + tests/qt_types_standalone/rust/src/lib.rs | 1 + .../qt_types_standalone/rust/src/qpolygonf.rs | 28 +++++++++++++++ 6 files changed, 68 insertions(+) create mode 100644 tests/qt_types_standalone/cpp/qpolygonf.h create mode 100644 tests/qt_types_standalone/rust/src/qpolygonf.rs diff --git a/tests/qt_types_standalone/CMakeLists.txt b/tests/qt_types_standalone/CMakeLists.txt index bd2e1cd07..42dd26814 100644 --- a/tests/qt_types_standalone/CMakeLists.txt +++ b/tests/qt_types_standalone/CMakeLists.txt @@ -67,6 +67,7 @@ add_executable(${APP_NAME} cpp/qpoint.h cpp/qpointf.h cpp/qpolygon.h + cpp/qpolygonf.h cpp/qqmlapplicationengine.h cpp/qqmlengine.h cpp/qrect.h diff --git a/tests/qt_types_standalone/cpp/main.cpp b/tests/qt_types_standalone/cpp/main.cpp index beae4764d..d0c5382a2 100644 --- a/tests/qt_types_standalone/cpp/main.cpp +++ b/tests/qt_types_standalone/cpp/main.cpp @@ -26,6 +26,7 @@ #include "qpoint.h" #include "qpointf.h" #include "qpolygon.h" +#include "qpolygonf.h" #include "qqmlapplicationengine.h" #include "qqmlengine.h" #include "qrect.h" @@ -92,6 +93,7 @@ main(int argc, char* argv[]) runTest(QScopedPointer(new QVector3DTest)); runTest(QScopedPointer(new QVector4DTest)); runTest(QScopedPointer(new QPolygonTest)); + runTest(QScopedPointer(new QPolygonFTest)); return status; } diff --git a/tests/qt_types_standalone/cpp/qpolygonf.h b/tests/qt_types_standalone/cpp/qpolygonf.h new file mode 100644 index 000000000..7f0df2eca --- /dev/null +++ b/tests/qt_types_standalone/cpp/qpolygonf.h @@ -0,0 +1,35 @@ +// clang-format off +// SPDX-FileCopyrightText: 2024 Klarälvdalens Datakonsult AB, a KDAB Group company +// clang-format on +// SPDX-FileContributor: Laurent Montel +// +// SPDX-License-Identifier: MIT OR Apache-2.0 +#pragma once + +#include +#include + +#include "cxx-qt-gen/qpolygonf.cxx.h" + +class QPolygonFTest : public QObject +{ + Q_OBJECT + +private Q_SLOTS: + void construct() + { + const auto m = construct_qpolygonf(); + QVERIFY(m.isEmpty()); + } + void clone() + { +#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) + const auto m = QPolygonF(QList() << QPoint(1, 2) << QPoint(3, 4)); +#else + const auto m = QPolygonF(QVector() << QPoint(1, 2) << QPoint(3, 4)); +#endif + const auto c = clone_qpolygonf(m); + QCOMPARE(c.toPolygon().point(0), QPoint(1, 2)); + QCOMPARE(c.toPolygon().point(1), QPoint(3, 4)); + } +}; diff --git a/tests/qt_types_standalone/rust/build.rs b/tests/qt_types_standalone/rust/build.rs index ae458ce59..8cbdeda23 100644 --- a/tests/qt_types_standalone/rust/build.rs +++ b/tests/qt_types_standalone/rust/build.rs @@ -26,6 +26,7 @@ fn main() { .file("src/qpoint.rs") .file("src/qpointf.rs") .file("src/qpolygon.rs") + .file("src/qpolygonf.rs") .file("src/qqmlapplicationengine.rs") .file("src/qqmlengine.rs") .file("src/qrect.rs") diff --git a/tests/qt_types_standalone/rust/src/lib.rs b/tests/qt_types_standalone/rust/src/lib.rs index d81d4ccb3..7aeab26d1 100644 --- a/tests/qt_types_standalone/rust/src/lib.rs +++ b/tests/qt_types_standalone/rust/src/lib.rs @@ -23,6 +23,7 @@ mod qpersistentmodelindex; mod qpoint; mod qpointf; mod qpolygon; +mod qpolygonf; mod qqmlapplicationengine; mod qqmlengine; mod qrect; diff --git a/tests/qt_types_standalone/rust/src/qpolygonf.rs b/tests/qt_types_standalone/rust/src/qpolygonf.rs new file mode 100644 index 000000000..95ce31762 --- /dev/null +++ b/tests/qt_types_standalone/rust/src/qpolygonf.rs @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2024 Klarälvdalens Datakonsult AB, a KDAB Group company +// SPDX-FileContributor: Laurent Montel +// +// SPDX-License-Identifier: MIT OR Apache-2.0 + +use cxx_qt_lib::QPolygonF; + +#[cxx::bridge] +mod qpolygonf_cxx { + unsafe extern "C++" { + include!("cxx-qt-lib/qpolygonf.h"); + + type QPolygonF = cxx_qt_lib::QPolygonF; + } + + extern "Rust" { + fn clone_qpolygonf(p: &QPolygonF) -> QPolygonF; + fn construct_qpolygonf() -> QPolygonF; + } +} + +fn construct_qpolygonf() -> QPolygonF { + QPolygonF::default() +} + +fn clone_qpolygonf(p: &QPolygonF) -> QPolygonF { + p.clone() +}