/** * @RDE_HEADER@ * Unit Tests for Qt6 API Migrations in SituationMap Module * $Id$ * $HeadURL$ * $Author$ */ #include #include #include #include #include #include #include #include #include #include #include #include // Test QStringView::sliced() API (Qt6 replacement for slice()) TEST(Qt6ApiTest, QStringView_Sliced) { QString testString = QStringLiteral("Hello World"); QStringView view(testString); // QBitArray::sliced() in Qt6 (was slice()) QStringView subView = view.sliced(0, 5); EXPECT_EQ(subView.toString(), QStringLiteral("Hello")); QStringView subView2 = view.sliced(6); EXPECT_EQ(subView2.toString(), QStringLiteral("World")); } // Test QList/QVector equivalence in Qt6 TEST(Qt6ApiTest, QList_QVector_Equivalence) { // In Qt6, QList and QVector are identical QList list = {1, 2, 3, 4, 5}; QVector vector = {1, 2, 3, 4, 5}; EXPECT_EQ(list.size(), vector.size()); for (int i = 0; i < list.size(); ++i) { EXPECT_EQ(list[i], vector[i]); } // Test that ambiguous overloads are resolved auto processList = [](const QList& data) { return data.size(); }; auto processVector = [](const QVector& data) { return data.size(); }; EXPECT_EQ(processList(list), 5); EXPECT_EQ(processVector(vector), 5); } // Test QFuture continuation pattern TEST(Qt6ApiTest, QFuture_Continuation) { QFuture future = QtConcurrent::run([]() { return 42; }); QFuture continued = future.then([](QFuture result) { return QString::number(result.result()); }); continued.waitForFinished(); EXPECT_EQ(continued.result(), QStringLiteral("42")); } // Test Qt::MiddleButton enum (Qt6 replacement for Qt::MidButton) TEST(Qt6ApiTest, Qt_MiddleButton_Enum) { // Qt::MiddleButton in Qt6 (was MidButton) Qt::MouseButton middleBtn = Qt::MiddleButton; EXPECT_EQ(middleBtn, Qt::MiddleButton); EXPECT_NE(middleBtn, Qt::LeftButton); EXPECT_NE(middleBtn, Qt::RightButton); } // Test QVariantMap iteration (Qt6: unite() removed) TEST(Qt6ApiTest, QVariantMap_Iteration) { QVariantMap map1; map1.insert(QStringLiteral("key1"), 1); map1.insert(QStringLiteral("key2"), 2); QVariantMap map2; // QMap::unite() removed in Qt6 for (auto it = map1.begin(); it != map1.end(); ++it) { map2.insert(it.key(), it.value()); } EXPECT_EQ(map1.size(), map2.size()); EXPECT_EQ(map1[QStringLiteral("key1")], map2[QStringLiteral("key1")]); EXPECT_EQ(map1[QStringLiteral("key2")], map2[QStringLiteral("key2")]); } // Test QTouchEvent API changes (Qt6) TEST(Qt6ApiTest, QTouchEvent_API) { // This test verifies the API exists - actual touch testing requires GUI // QTouchEvent::points() and QEventPoint::globalPosition() in Qt6 // Create a mock test - in real code, QTouchEvent is created by system // We verify the types compile correctly using PointType = QEventPoint; // Verify QEventPoint has the expected Qt6 methods static_assert(std::is_same_v); static_assert(std::is_same_v); static_assert(std::is_same_v); SUCCEED() << "QEventPoint API types verified for Qt6"; } // Test QMouseEvent position API (Qt6) TEST(Qt6ApiTest, QMouseEvent_Position_API) { // QMouseEvent::position() in Qt6 (was x()/y()) // Create a mouse event with Qt6 API QMouseEvent event(QEvent::MouseButtonPress, QPointF(100.0, 200.0), // globalPos QPointF(100.0, 200.0), // pos Qt::LeftButton, Qt::LeftButton, Qt::NoModifier); // Qt6 API: position() returns QPointF EXPECT_DOUBLE_EQ(event.position().x(), 100.0); EXPECT_DOUBLE_EQ(event.position().y(), 200.0); // Qt6 API: globalPosition() returns QPointF EXPECT_DOUBLE_EQ(event.globalPosition().x(), 100.0); EXPECT_DOUBLE_EQ(event.globalPosition().y(), 200.0); } // Test QWheelEvent position API (Qt6) TEST(Qt6ApiTest, QWheelEvent_Position_API) { // QWheelEvent::position() in Qt6 (was x()/y()) QWheelEvent event(QPointF(100.0, 200.0), // pos QPointF(100.0, 200.0), // globalPos QPoint(0, 0), // pixelDelta QPoint(0, 120), // angleDelta Qt::NoButton, Qt::NoModifier, Qt::NoScrollPhase, false); // Qt6 API: position() returns QPointF EXPECT_DOUBLE_EQ(event.position().x(), 100.0); EXPECT_DOUBLE_EQ(event.position().y(), 200.0); } // Test std::list with Qt6 (no changes needed, but verify compatibility) TEST(Qt6ApiTest, StdList_Compatibility) { std::list intList = {1, 2, 3, 4, 5}; // Verify standard operations work EXPECT_EQ(intList.size(), 5u); EXPECT_EQ(intList.front(), 1); EXPECT_EQ(intList.back(), 5); intList.push_back(6); EXPECT_EQ(intList.size(), 6u); } // Test QSharedPointer (Qt6 compatible) // Note: Qt6 QSharedPointer doesn't have use_count() - use isNull() and pointer comparison TEST(Qt6ApiTest, QSharedPointer_Basic) { QSharedPointer ptr(new int(42)); EXPECT_FALSE(ptr.isNull()); EXPECT_EQ(*ptr, 42); QSharedPointer ptr2 = ptr; EXPECT_FALSE(ptr.isNull()); EXPECT_FALSE(ptr2.isNull()); EXPECT_EQ(ptr.data(), ptr2.data()); // Both point to same object EXPECT_EQ(*ptr, *ptr2); // Both access same value }