diff --git a/src/corelib/kernel/qjniarray.h b/src/corelib/kernel/qjniarray.h index 40b4f642878..998465273e1 100644 --- a/src/corelib/kernel/qjniarray.h +++ b/src/corelib/kernel/qjniarray.h @@ -78,7 +78,13 @@ private: Q_ASSERT(lhs.m_array == rhs.m_array); return lhs.m_index == rhs.m_index; } - Q_DECLARE_EQUALITY_COMPARABLE(QJniArrayIterator) + friend constexpr Qt::strong_ordering compareThreeWay(const QJniArrayIterator &lhs, + const QJniArrayIterator &rhs) + { + Q_ASSERT(lhs.m_array == rhs.m_array); + return Qt::compareThreeWay(lhs.m_index, rhs.m_index); + } + Q_DECLARE_STRONGLY_ORDERED(QJniArrayIterator) using VT = std::remove_const_t; friend class QJniArray; diff --git a/tests/auto/corelib/kernel/qjniarray/tst_qjniarray.cpp b/tests/auto/corelib/kernel/qjniarray/tst_qjniarray.cpp index e1124bd0a51..4b1a7ba6e68 100644 --- a/tests/auto/corelib/kernel/qjniarray/tst_qjniarray.cpp +++ b/tests/auto/corelib/kernel/qjniarray/tst_qjniarray.cpp @@ -20,6 +20,7 @@ private slots: void invalidArraysAreEmpty(); void size(); void operators(); + void ordering(); void toContainer(); }; @@ -263,6 +264,18 @@ void tst_QJniArray::operators() } } +void tst_QJniArray::ordering() +{ + QByteArray bytes("abcde"); + QJniArray array(bytes); + + auto arrayBegin = array.begin(); + auto arrayEnd = array.end(); + QCOMPARE(arrayBegin, arrayBegin); + QCOMPARE_LT(arrayBegin, arrayEnd); + QCOMPARE_GT(arrayEnd, arrayBegin); +} + void tst_QJniArray::toContainer() { std::vector charVector{u'a', u'b', u'c'};