Details
-
User Story
-
Resolution: Unresolved
-
P2: Important
-
None
-
None
-
None
-
5
-
Foundation Sprint 108, Foundation Sprint 109, Foundation Sprint 110, Foundation Sprint 111, Foundation Sprint 112, Foundation Sprint 113, Foundation Sprint 114, Foundation Sprint 115
Description
Following the implementation of QTBUG-98873, I would also like a QCOMPARE macro that tests my C++20 spaceship operators <=>. It's tedious to use the moral equivalents of
QVERIFY((a <=> b) == r); QCOMPARE(a <=> b, r);
esp since the std::*_ordering types don't support comparing two objects of their type with each other.
Locally, I have defined me a
#define COMPARE_3WAY(a, b, r) \ do { \ static_assert(std::is_same_v<decltype((a) <=> (b)), decltype(r)>) ; \ const auto actual = (a) <=> (b); \ QCOMPARE(std::is_eq(actual), std::is_eq(r); \ QCOMPARE(std::is_lt(actual), std::is_lt(r); \ QCOMPARE(std::is_gt(actual), std::is_gt(r); \ } while (0)
But that, of course, doesn't output the values of a, b, and r upon failure, and doesn't work with strong_ordering::equivalent).
Attachments
Issue Links
- is required for
-
QTBUG-104111 Modernize comparisons [Core: Date/Time]
- Closed
-
QTBUG-104113 Modernize comparisons: can we provide macros?
- Closed
-
QTBUG-113234 Modernize comparisons [Core: QVariant]
- Closed
-
QTBUG-117660 Modernize comparisons [Core: Item Views]
- Closed
-
QTBUG-117661 Modernize comparisons [Core: Strings]
- Closed
- relates to
-
QTBUG-104114 Check <=> in QCOMPARE_op
- Closed
-
QTBUG-104000 As a user of QTestLib, I want to use QCOMPARE_op with fuzzy FP comparisons
- Open
Gerrit Reviews
For Gerrit Dashboard: QTBUG-104108 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
565936,39 | Create a QCOMPARE_3WAY macro to test the C++20 spaceship operator <=> | dev | qt/qtbase | Status: NEW | 0 | 0 |