/ tests / tst_switchrole.qml
tst_switchrole.qml
 1  import QtQuick 2.0
 2  import QtQml 2.2
 3  import QtTest 1.1
 4  import SortFilterProxyModel 0.2
 5  import QtQml 2.2
 6  
 7  Item {
 8      ListModel {
 9          id: listModel
10          ListElement { name: "1"; favorite: true }
11          ListElement { name: "2"; favorite: false }
12          ListElement { name: "3"; favorite: false }
13          ListElement { name: "4"; favorite: true }
14      }
15  
16      SortFilterProxyModel {
17          id: testModel
18          sourceModel: listModel
19  
20          proxyRoles: SwitchRole {
21              id: switchRole
22              name: "switchRole"
23              ValueFilter {
24                  id: valueFilter
25                  roleName: "favorite"
26                  value: true
27                  SwitchRole.value: "*"
28              }
29              ValueFilter {
30                  id: secondValueFilter
31                  roleName: "favorite"
32                  value: true
33                  SwitchRole.value: "%"
34              }
35              ValueFilter {
36                  id: thirdValueFilter
37                  roleName: "name"
38                  value: 3
39                  SwitchRole.value: "three"
40              }
41              defaultRoleName: "name"
42              defaultValue: "foo"
43          }
44      }
45  
46      Instantiator {
47          id: instantiator
48          model: testModel
49          QtObject {
50              property var switchRole: model.switchRole
51          }
52      }
53  
54      TestCase {
55          name: "SwitchRole"
56  
57          function test_role() {
58              compare(testModel.get(0, "switchRole"), "*");
59              compare(testModel.get(1, "switchRole"), "2");
60              compare(testModel.get(2, "switchRole"), "three");
61              compare(testModel.get(3, "switchRole"), "*");
62          }
63  
64          function test_valueChange() {
65              compare(instantiator.object.switchRole, "*");
66              valueFilter.SwitchRole.value = "test";
67              compare(instantiator.object.switchRole, "test");
68              valueFilter.SwitchRole.value = "*";
69          }
70  
71          function test_filterChange() {
72              compare(instantiator.object.switchRole, "*");
73              valueFilter.enabled = false;
74              compare(instantiator.object.switchRole, "%");
75              valueFilter.enabled = true;
76          }
77  
78          function test_defaultSourceChange() {
79              compare(instantiator.object.switchRole, "*");
80              listModel.setProperty(0, "favorite", false);
81              compare(instantiator.object.switchRole, "1");
82              compare(instantiator.objectAt(1).switchRole, "2");
83              listModel.setProperty(1, "name", "test");
84              compare(instantiator.objectAt(1).switchRole, "test");
85  
86              listModel.setProperty(1, "name", "2");
87              listModel.setProperty(0, "favorite", true);
88          }
89  
90          function test_defaultValue() {
91              switchRole.defaultRoleName = "";
92              compare(instantiator.objectAt(1).switchRole, "foo");
93              switchRole.defaultValue = "bar";
94              compare(instantiator.objectAt(1).switchRole, "bar");
95              switchRole.defaultRoleName = "name";
96              switchRole.defaultValue = "foo";
97          }
98      }
99  }