/ tests / tst_expressionrole.qml
tst_expressionrole.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      property int c: 0
 9      ListModel {
10          id: listModel
11          ListElement { a: 1; b: 2 }
12      }
13  
14      SortFilterProxyModel {
15          id: testModel
16          sourceModel: listModel
17  
18          proxyRoles: ExpressionRole {
19              name: "expressionRole"
20              expression: a + model.b + c
21          }
22      }
23  
24      Instantiator {
25          id: instantiator
26          model: testModel
27          QtObject {
28              property string expressionRole: model.expressionRole
29          }
30      }
31  
32      TestCase {
33          name: "ExpressionRole"
34  
35          function test_expressionRole() {
36              fuzzyCompare(instantiator.object.expressionRole, 3, 1e-7);
37              listModel.setProperty(0, "b", 9);
38              fuzzyCompare(instantiator.object.expressionRole, 10, 1e-7);
39              c = 1327;
40              fuzzyCompare(instantiator.object.expressionRole, 1337, 1e-7);
41          }
42      }
43  }