/ tests / tst_helpers.qml
tst_helpers.qml
  1  import QtQuick 2.0
  2  import QtQml 2.2
  3  import QtTest 1.1
  4  import SortFilterProxyModel 0.2
  5  import SortFilterProxyModel.Test 0.2
  6  
  7  Item {
  8      ListModel {
  9          id: dataModel
 10          ListElement {
 11              firstName: "Tupac"
 12              lastName: "Shakur"
 13          }
 14          ListElement {
 15              firstName: "Charles"
 16              lastName: "Aznavour"
 17          }
 18          ListElement {
 19              firstName: "Frank"
 20              lastName: "Sinatra"
 21          }
 22          ListElement {
 23              firstName: "Laurent"
 24              lastName: "Garnier"
 25          }
 26          ListElement {
 27              firstName: "Phillipe"
 28              lastName: "Risoli"
 29          }
 30      }
 31      SortFilterProxyModel {
 32          id: testModel
 33          sourceModel: dataModel
 34      }
 35      SortFilterProxyModel {
 36          id: testModel2
 37          sourceModel: dataModel
 38          filters: ValueFilter {
 39              inverted: true
 40              roleName: "lastName"
 41              value: "Sinatra"
 42          }
 43          sorters: [
 44              RoleSorter { roleName: "lastName"},
 45              RoleSorter { roleName: "firstName"}
 46          ]
 47      }
 48  
 49      TestCase {
 50          name: "Helper functions"
 51  
 52          function test_getWithRoleName() {
 53              compare(testModel.get(0, "lastName"), "Shakur");
 54          }
 55  
 56          function test_getWithoutRoleName() {
 57              compare(testModel.get(1), { firstName: "Charles", lastName: "Aznavour"});
 58          }
 59  
 60          function test_roleForName() {
 61              compare(testModel.data(testModel.index(0, 0), testModel.roleForName("firstName")), "Tupac");
 62              compare(testModel.data(testModel.index(1, 0), testModel.roleForName("lastName")), "Aznavour");
 63          }
 64  
 65          function test_mapToSource() {
 66              compare(testModel2.mapToSource(3), 0);
 67              compare(testModel2.mapToSource(4), -1);
 68          }
 69  
 70          function test_mapToSourceLoop() {
 71              for (var i = 0; i < testModel2.count; ++i) {
 72                  var sourceRow = testModel2.mapToSource(i);
 73                  compare(testModel2.get(i).lastName, dataModel.get(sourceRow).lastName);
 74              }
 75          }
 76  
 77          function test_mapToSourceLoop_index() {
 78              for (var i = 0; i < testModel2.count; ++i) {
 79                  var proxyIndex = testModel2.index(i, 0);
 80                  var sourceIndex = testModel2.mapToSource(proxyIndex);
 81                  var roleNumber = testModel2.roleForName("lastName");
 82                  compare(testModel2.data(proxyIndex, roleNumber), dataModel.data(sourceIndex, roleNumber));
 83              }
 84          }
 85  
 86          function test_mapFromSource() {
 87              compare(testModel2.mapFromSource(1), 0);
 88              compare(testModel2.mapFromSource(2), -1);
 89          }
 90  
 91          function test_mapFromSourceLoop() {
 92              for (var i = 0; i < dataModel.count; ++i) {
 93                  var proxyRow = testModel2.mapFromSource(i);
 94                  if (proxyRow !== -1) {
 95                      compare(dataModel.get(i).lastName, testModel2.get(proxyRow).lastName);
 96                  }
 97              }
 98          }
 99  
100          function test_mapFromSourceLoop_index() {
101              for (var i = 0; i < dataModel.count; ++i) {
102                  var sourceIndex = dataModel.index(i, 0);
103                  var proxyIndex = testModel2.mapFromSource(sourceIndex);
104                  var roleNumber = testModel2.roleForName("lastName");
105                  if (proxyIndex.valid)
106                      compare(testModel2.data(proxyIndex, roleNumber), dataModel.data(sourceIndex, roleNumber));
107              }
108          }
109  
110      }
111  }