From 247ec89cc58e66bba5b97ce76ce9686f5a299aa2 Mon Sep 17 00:00:00 2001 From: Ivan Solovev Date: Tue, 6 Aug 2024 14:36:30 +0200 Subject: [PATCH] Test partial_ordering::unordered != 0 comparison ... and figure out that it does not match the std implementation. Fix will be provided in a follow-up commit. Task-number: QTBUG-127759 Pick-to: 6.7 6.5 6.2 5.15 Change-Id: I51c4f086af531a81a6aae03f3462972437d41f97 Reviewed-by: Thiago Macieira Reviewed-by: Marc Mutz (cherry picked from commit fed1099ad2909cb8e75477e60e0a8b41db3f58d0) Reviewed-by: Qt Cherry-pick Bot --- .../corelib/global/qcompare/tst_qcompare.cpp | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tests/auto/corelib/global/qcompare/tst_qcompare.cpp b/tests/auto/corelib/global/qcompare/tst_qcompare.cpp index bb31c01e23a..d28833abb16 100644 --- a/tests/auto/corelib/global/qcompare/tst_qcompare.cpp +++ b/tests/auto/corelib/global/qcompare/tst_qcompare.cpp @@ -22,6 +22,7 @@ private slots: void conversions(); void is_eq_overloads(); void compareThreeWay(); + void unorderedNeqLiteralZero(); }; void tst_QCompare::legacyPartialOrdering() @@ -846,5 +847,46 @@ QT_WARNING_POP QCOMPARE_EQ(qCompareThreeWay(arr.data(), a0), Qt::strong_ordering::equivalent); } +void tst_QCompare::unorderedNeqLiteralZero() +{ + // This test is checking QTBUG-127759 + constexpr auto qtUnordered = Qt::partial_ordering::unordered; + constexpr auto qtLegacyUnordered = QPartialOrdering::Unordered; +#ifdef __cpp_lib_three_way_comparison + constexpr auto stdUnordered = std::partial_ordering::unordered; + + QVERIFY(stdUnordered != 0); + QVERIFY(0 != stdUnordered); + QVERIFY(is_neq(stdUnordered)); + + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QCOMPARE_EQ(qtUnordered != 0, stdUnordered != 0); + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QCOMPARE_EQ(0 != qtUnordered, 0 != stdUnordered); + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QCOMPARE_EQ(is_neq(qtUnordered), is_neq(stdUnordered)); + + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QCOMPARE_EQ(qtLegacyUnordered != 0, stdUnordered != 0); + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QCOMPARE_EQ(0 != qtLegacyUnordered, 0 != stdUnordered); + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QCOMPARE_EQ(is_neq(qtLegacyUnordered), is_neq(stdUnordered)); +#endif + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QVERIFY(qtUnordered != 0); + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QVERIFY(0 != qtUnordered); + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QVERIFY(is_neq(qtUnordered)); + + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QVERIFY(qtLegacyUnordered != 0); + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QVERIFY(0 != qtLegacyUnordered); + QEXPECT_FAIL("", "QTBUG-127759", Continue); + QVERIFY(is_neq(qtLegacyUnordered)); +} + QTEST_MAIN(tst_QCompare) #include "tst_qcompare.moc"