diff options
author | Balazs Gyurak <ba32107@gmail.com> | 2019-06-18 23:58:47 +0300 |
---|---|---|
committer | Jonathan White <support@dmapps.us> | 2019-06-19 01:51:38 +0300 |
commit | 09181fab13d1b806bcee1444bec75b9825c5147d (patch) | |
tree | eeb9177ad32bf9762af3723bf7a3c4a70bf6f745 /tests/TestGroup.cpp | |
parent | 0c2d1bcc503bdfe233a563bbd9b4745384975d59 (diff) |
Add group sorting feature
* Enabling sorting of groups and their children in ascending and descending direction
Diffstat (limited to 'tests/TestGroup.cpp')
-rw-r--r-- | tests/TestGroup.cpp | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/tests/TestGroup.cpp b/tests/TestGroup.cpp index 3e4568c35..7d42f161a 100644 --- a/tests/TestGroup.cpp +++ b/tests/TestGroup.cpp @@ -840,3 +840,183 @@ void TestGroup::testEquals() QVERIFY(group->equals(group.data(), CompareItemDefault)); } + +void TestGroup::sortChildrenRecursively() +{ + auto createTestGroupWithUnorderedChildren = []() -> Group* { + Group* parent = new Group(); + + Group* group1 = new Group(); + group1->setName("B"); + group1->setParent(parent); + Group* group2 = new Group(); + group2->setName("e"); + group2->setParent(parent); + Group* group3 = new Group(); + group3->setName("Test999"); + group3->setParent(parent); + Group* group4 = new Group(); + group4->setName("A"); + group4->setParent(parent); + Group* group5 = new Group(); + group5->setName("z"); + group5->setParent(parent); + Group* group6 = new Group(); + group6->setName("045"); + group6->setParent(parent); + Group* group7 = new Group(); + group7->setName("60"); + group7->setParent(parent); + Group* group8 = new Group(); + group8->setName("04test"); + group8->setParent(parent); + Group* group9 = new Group(); + group9->setName("Test12"); + group9->setParent(parent); + Group* group10 = new Group(); + group10->setName("i"); + group10->setParent(parent); + + Group* subGroup1 = new Group(); + subGroup1->setName("sub_xte"); + subGroup1->setParent(group10); + Group* subGroup2 = new Group(); + subGroup2->setName("sub_010"); + subGroup2->setParent(group10); + Group* subGroup3 = new Group(); + subGroup3->setName("sub_000"); + subGroup3->setParent(group10); + Group* subGroup4 = new Group(); + subGroup4->setName("sub_M"); + subGroup4->setParent(group10); + Group* subGroup5 = new Group(); + subGroup5->setName("sub_p"); + subGroup5->setParent(group10); + Group* subGroup6 = new Group(); + subGroup6->setName("sub_45p"); + subGroup6->setParent(group10); + Group* subGroup7 = new Group(); + subGroup7->setName("sub_6p"); + subGroup7->setParent(group10); + Group* subGroup8 = new Group(); + subGroup8->setName("sub_tt"); + subGroup8->setParent(group10); + Group* subGroup9 = new Group(); + subGroup9->setName("sub_t0"); + subGroup9->setParent(group10); + + return parent; + }; + + Group* parent = createTestGroupWithUnorderedChildren(); + Group* subParent = parent->children().last(); + parent->sortChildrenRecursively(); + QList<Group*> children = parent->children(); + QCOMPARE(children.size(), 10); + QCOMPARE(children[0]->name(), QString("045")); + QCOMPARE(children[1]->name(), QString("04test")); + QCOMPARE(children[2]->name(), QString("60")); + QCOMPARE(children[3]->name(), QString("A")); + QCOMPARE(children[4]->name(), QString("B")); + QCOMPARE(children[5]->name(), QString("e")); + QCOMPARE(children[6]->name(), QString("i")); + QCOMPARE(children[7]->name(), QString("Test12")); + QCOMPARE(children[8]->name(), QString("Test999")); + QCOMPARE(children[9]->name(), QString("z")); + children = subParent->children(); + QCOMPARE(children.size(), 9); + QCOMPARE(children[0]->name(), QString("sub_000")); + QCOMPARE(children[1]->name(), QString("sub_010")); + QCOMPARE(children[2]->name(), QString("sub_45p")); + QCOMPARE(children[3]->name(), QString("sub_6p")); + QCOMPARE(children[4]->name(), QString("sub_M")); + QCOMPARE(children[5]->name(), QString("sub_p")); + QCOMPARE(children[6]->name(), QString("sub_t0")); + QCOMPARE(children[7]->name(), QString("sub_tt")); + QCOMPARE(children[8]->name(), QString("sub_xte")); + delete parent; + + parent = createTestGroupWithUnorderedChildren(); + subParent = parent->children().last(); + parent->sortChildrenRecursively(true); + children = parent->children(); + QCOMPARE(children.size(), 10); + QCOMPARE(children[0]->name(), QString("z")); + QCOMPARE(children[1]->name(), QString("Test999")); + QCOMPARE(children[2]->name(), QString("Test12")); + QCOMPARE(children[3]->name(), QString("i")); + QCOMPARE(children[4]->name(), QString("e")); + QCOMPARE(children[5]->name(), QString("B")); + QCOMPARE(children[6]->name(), QString("A")); + QCOMPARE(children[7]->name(), QString("60")); + QCOMPARE(children[8]->name(), QString("04test")); + QCOMPARE(children[9]->name(), QString("045")); + children = subParent->children(); + QCOMPARE(children.size(), 9); + QCOMPARE(children[0]->name(), QString("sub_xte")); + QCOMPARE(children[1]->name(), QString("sub_tt")); + QCOMPARE(children[2]->name(), QString("sub_t0")); + QCOMPARE(children[3]->name(), QString("sub_p")); + QCOMPARE(children[4]->name(), QString("sub_M")); + QCOMPARE(children[5]->name(), QString("sub_6p")); + QCOMPARE(children[6]->name(), QString("sub_45p")); + QCOMPARE(children[7]->name(), QString("sub_010")); + QCOMPARE(children[8]->name(), QString("sub_000")); + delete parent; + + parent = createTestGroupWithUnorderedChildren(); + subParent = parent->children().last(); + subParent->sortChildrenRecursively(); + children = parent->children(); + QCOMPARE(children.size(), 10); + QCOMPARE(children[0]->name(), QString("B")); + QCOMPARE(children[1]->name(), QString("e")); + QCOMPARE(children[2]->name(), QString("Test999")); + QCOMPARE(children[3]->name(), QString("A")); + QCOMPARE(children[4]->name(), QString("z")); + QCOMPARE(children[5]->name(), QString("045")); + QCOMPARE(children[6]->name(), QString("60")); + QCOMPARE(children[7]->name(), QString("04test")); + QCOMPARE(children[8]->name(), QString("Test12")); + QCOMPARE(children[9]->name(), QString("i")); + children = subParent->children(); + QCOMPARE(children.size(), 9); + QCOMPARE(children[0]->name(), QString("sub_000")); + QCOMPARE(children[1]->name(), QString("sub_010")); + QCOMPARE(children[2]->name(), QString("sub_45p")); + QCOMPARE(children[3]->name(), QString("sub_6p")); + QCOMPARE(children[4]->name(), QString("sub_M")); + QCOMPARE(children[5]->name(), QString("sub_p")); + QCOMPARE(children[6]->name(), QString("sub_t0")); + QCOMPARE(children[7]->name(), QString("sub_tt")); + QCOMPARE(children[8]->name(), QString("sub_xte")); + delete parent; + + parent = createTestGroupWithUnorderedChildren(); + subParent = parent->children().last(); + subParent->sortChildrenRecursively(true); + children = parent->children(); + QCOMPARE(children.size(), 10); + QCOMPARE(children[0]->name(), QString("B")); + QCOMPARE(children[1]->name(), QString("e")); + QCOMPARE(children[2]->name(), QString("Test999")); + QCOMPARE(children[3]->name(), QString("A")); + QCOMPARE(children[4]->name(), QString("z")); + QCOMPARE(children[5]->name(), QString("045")); + QCOMPARE(children[6]->name(), QString("60")); + QCOMPARE(children[7]->name(), QString("04test")); + QCOMPARE(children[8]->name(), QString("Test12")); + QCOMPARE(children[9]->name(), QString("i")); + children = subParent->children(); + QCOMPARE(children.size(), 9); + QCOMPARE(children[0]->name(), QString("sub_xte")); + QCOMPARE(children[1]->name(), QString("sub_tt")); + QCOMPARE(children[2]->name(), QString("sub_t0")); + QCOMPARE(children[3]->name(), QString("sub_p")); + QCOMPARE(children[4]->name(), QString("sub_M")); + QCOMPARE(children[5]->name(), QString("sub_6p")); + QCOMPARE(children[6]->name(), QString("sub_45p")); + QCOMPARE(children[7]->name(), QString("sub_010")); + QCOMPARE(children[8]->name(), QString("sub_000")); + delete parent; +} |