tst_sortercontainerattached.qml
1 import QtQuick 2.0 2 import SortFilterProxyModel 0.2 3 import QtQml.Models 2.2 4 import QtQml 2.2 5 import QtTest 1.1 6 7 Item { 8 9 ListModel { 10 id: dataModel 11 ListElement { a: 3; b: 2; c: 9 } 12 ListElement { a: 3; b: 5; c: 0 } 13 ListElement { a: 3; b: 2; c: 8 } 14 ListElement { a: 2; b: 9; c: 1 } 15 ListElement { a: 2; b: 1; c: 7 } 16 ListElement { a: 2; b: 6; c: 2 } 17 ListElement { a: 1; b: 8; c: 6 } 18 ListElement { a: 1; b: 7; c: 3 } 19 ListElement { a: 1; b: 8; c: 5 } 20 } 21 22 SortFilterProxyModel { 23 id: testModel 24 sourceModel: dataModel 25 } 26 ListModel { 27 id: sorterRoleModel 28 ListElement { roleName: "a" } 29 ListElement { roleName: "b" } 30 ListElement { roleName: "c" } 31 } 32 Instantiator { 33 id: sorterInstantiator 34 model: sorterRoleModel 35 delegate: RoleSorter { 36 SorterContainer.container: testModel 37 roleName: model.roleName 38 } 39 } 40 41 SortFilterProxyModel { 42 id: testModelPriority 43 sourceModel: dataModel 44 } 45 ListModel { 46 id: sorterRoleModelPriority 47 ListElement { roleName: "a" } 48 ListElement { roleName: "b" } 49 ListElement { roleName: "c" } 50 } 51 Instantiator { 52 id: sorterInstantiatorPriority 53 model: sorterRoleModelPriority 54 delegate: RoleSorter { 55 SorterContainer.container: testModelPriority 56 roleName: model.roleName 57 priority: -model.index 58 } 59 } 60 61 TestCase { 62 name: "SorterContainerAttached" 63 64 function modelValues(model) { 65 var modelValues = []; 66 67 for (var i = 0; i < model.count; i++) 68 modelValues.push(model.get(i)); 69 70 return modelValues; 71 } 72 73 function test_sorterContainers() { 74 compare(sorterInstantiator.count, 3); 75 compare(modelValues(testModel), [ 76 { a: 1, b: 7, c: 3 }, 77 { a: 1, b: 8, c: 5 }, 78 { a: 1, b: 8, c: 6 }, 79 { a: 2, b: 1, c: 7 }, 80 { a: 2, b: 6, c: 2 }, 81 { a: 2, b: 9, c: 1 }, 82 { a: 3, b: 2, c: 8 }, 83 { a: 3, b: 2, c: 9 }, 84 { a: 3, b: 5, c: 0 } 85 ]); 86 sorterRoleModel.remove(0); // a, b, c --> b, c 87 wait(0); 88 compare(sorterInstantiator.count, 2); 89 compare(JSON.stringify(modelValues(testModel)), JSON.stringify([ 90 { a: 2, b: 1, c: 7 }, 91 { a: 3, b: 2, c: 8 }, 92 { a: 3, b: 2, c: 9 }, 93 { a: 3, b: 5, c: 0 }, 94 { a: 2, b: 6, c: 2 }, 95 { a: 1, b: 7, c: 3 }, 96 { a: 1, b: 8, c: 5 }, 97 { a: 1, b: 8, c: 6 }, 98 { a: 2, b: 9, c: 1 }, 99 ])); 100 } 101 102 function test_sorterContainersPriority() { 103 compare(sorterInstantiatorPriority.count, 3); 104 compare(JSON.stringify(modelValues(testModelPriority)), JSON.stringify([ 105 { a: 1, b: 7, c: 3 }, 106 { a: 1, b: 8, c: 5 }, 107 { a: 1, b: 8, c: 6 }, 108 { a: 2, b: 1, c: 7 }, 109 { a: 2, b: 6, c: 2 }, 110 { a: 2, b: 9, c: 1 }, 111 { a: 3, b: 2, c: 8 }, 112 { a: 3, b: 2, c: 9 }, 113 { a: 3, b: 5, c: 0 } 114 ])); 115 sorterRoleModelPriority.move(0, 1, 1); // a, b, c --> b, a, c 116 wait(0); 117 compare(sorterInstantiatorPriority.count, 3); 118 compare(JSON.stringify(modelValues(testModelPriority)), JSON.stringify([ 119 { a: 2, b: 1, c: 7 }, 120 { a: 3, b: 2, c: 8 }, 121 { a: 3, b: 2, c: 9 }, 122 { a: 3, b: 5, c: 0 }, 123 { a: 2, b: 6, c: 2 }, 124 { a: 1, b: 7, c: 3 }, 125 { a: 1, b: 8, c: 5 }, 126 { a: 1, b: 8, c: 6 }, 127 { a: 2, b: 9, c: 1 } 128 ])); 129 } 130 } 131 }