/ tests / tst_sortercontainerattached.qml
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  }