#include "objectmodel.hpp" #include #include #include #include #include "../model.hpp" void TestObjectModel::diffUpdateInsertRemove() { QObject a; QObject b; QObject c; QObject d; auto model = ObjectModel(nullptr); model.insertObject(&a); model.insertObject(&b); model.insertObject(&c); QCOMPARE(model.valueList(), (QList {&a, &b, &c})); // drop b, append d — relative order of survivors unchanged model.diffUpdate({&a, &c, &d}); QCOMPARE(model.valueList(), (QList {&a, &c, &d})); } void TestObjectModel::diffUpdateReorder() { QObject a; QObject b; QObject c; QObject d; auto model = ObjectModel(nullptr); model.insertObject(&d); model.insertObject(&a); model.insertObject(&b); model.insertObject(&c); QCOMPARE(model.valueList(), (QList {&d, &a, &b, &c})); // pure permutation: same elements, different order. Previously turned // [d,a,b,c] into [a,b,c,d,a,b,c] because the old row was never removed // before inserting at the new index. model.diffUpdate({&a, &b, &c, &d}); QCOMPARE(model.valueList(), (QList {&a, &b, &c, &d})); } QTEST_MAIN(TestObjectModel);