diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-06-10 16:46:54 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-06-11 13:29:23 +0000 |
commit | 56d62345ad34b8efb6a72a3c189542eb295ac2b9 (patch) | |
tree | aaa002324fcbe36f13823e46be09135be125a4ff /tests/auto/gui/itemmodels | |
parent | 05dcc0499bfae43b8ae4100ab71902a13dd40f74 (diff) |
Fix less-than comparison for QStandardItem and QSortFilterProxyModel with invalid data.
Previously, QStandardItem::operator<() returned true when both
items had invalid data. With MSVC in debug mode (checked
iterators/STL), this triggered an assert in
tst_QStandardItem::sortChildren() since that verifies
that !(b < a) when a < b:
Debug Assertion Failed!
Line: 3006
Expression: invalid operator<
Introduce a stable sort order for invalid items such that
other items are always less than invalid items and comparing
invalid items returns false (indicating equivalence).
Change-Id: Ica0f0d9f001c86973b1941dbcc1faf282e4c47df
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'tests/auto/gui/itemmodels')
-rw-r--r-- | tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp b/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp index 5dce228ca0..2448b89296 100644 --- a/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp +++ b/tests/auto/gui/itemmodels/qstandarditem/tst_qstandarditem.cpp @@ -81,6 +81,7 @@ private slots: void clone(); void sortChildren(); void subclassing(); + void lessThan(); }; tst_QStandardItem::tst_QStandardItem() @@ -1095,5 +1096,19 @@ void tst_QStandardItem::subclassing() QCOMPARE(item->child(2), (QStandardItem*)child1); } +void tst_QStandardItem::lessThan() +{ + QStandardItem stringA("A"); + QStandardItem stringB("B"); + QStandardItem invalid1; + QStandardItem invalid2; + QVERIFY(stringA < stringB); + QVERIFY(!(stringB < stringA)); + // Items with invalid data go to the end. + QVERIFY(stringA < invalid1); + QVERIFY(!(invalid1 < stringA)); + QVERIFY(!(invalid1 < invalid2)); +} + QTEST_MAIN(tst_QStandardItem) #include "tst_qstandarditem.moc" |