tst_builtins.qml
1 import QtQuick 2.0 2 import QtQml 2.2 3 import QtTest 1.1 4 import SortFilterProxyModel 0.2 5 6 Item { 7 ListModel { 8 id: testModel 9 ListElement{role1: 1; role2: 1} 10 ListElement{role1: 2; role2: 1} 11 ListElement{role1: 3; role2: 2} 12 ListElement{role1: 4; role2: 2} 13 } 14 ListModel { 15 id: noRolesFirstTestModel_1 16 function initModel() { 17 append({role1: 1, role2: 1 }) 18 append({role1: 2, role2: 1 }) 19 append({role1: 3, role2: 2 }) 20 append({role1: 4, role2: 2 }) 21 } 22 } 23 ListModel { 24 id: noRolesFirstTestModel_2 25 function initModel() { 26 append({role1: 3, role2: 2 }) 27 append({role1: 4, role2: 2 }) 28 } 29 } 30 ListModel { 31 id: noRolesFirstTestModel_3 32 function initModel() { 33 append({role1: 3, role2: 2 }) 34 append({role1: 4, role2: 2 }) 35 } 36 } 37 SortFilterProxyModel { 38 id: testProxyModel 39 property string tag: "testProxyModel" 40 sourceModel: testModel 41 filterRoleName: "role2" 42 filterValue: 2 43 property var expectedData: ([{role1: 3, role2: 2}, {role1: 4, role2: 2}]) 44 } 45 SortFilterProxyModel { 46 id: noRolesFirstTestProxyModel 47 property string tag: "noRolesFirstTestProxyModel" 48 sourceModel: noRolesFirstTestModel_1 49 filterRoleName: "role2" 50 filterValue: 2 51 property var expectedData: ([{role1: 3, role2: 2}, {role1: 4, role2: 2}]) 52 } 53 SortFilterProxyModel { 54 id: noRolesFirstTestProxyModelWithProxyRoles 55 property string tag: "noRolesFirstTestProxyModelWithProxyRoles" 56 sourceModel: noRolesFirstTestModel_2 57 property var expectedData: ([{role1: 3, role2: 2, proxyRole: 42}, {role1: 4, role2: 2, proxyRole: 42}]) 58 59 proxyRoles: ExpressionRole { 60 name: "proxyRole" 61 expression: 42 62 } 63 } 64 SortFilterProxyModel { 65 id: noRolesFirstTestProxyModelWithProxyRolesNested 66 property string tag: "noRolesFirstTestProxyModelWithProxyRolesNested" 67 68 property var nested: SortFilterProxyModel { 69 id: nested 70 71 function initModel() { 72 sourceModel.initModel(); 73 } 74 75 sourceModel: noRolesFirstTestModel_3 76 77 proxyRoles: ExpressionRole { 78 name: "proxyRole" 79 expression: 42 80 } 81 } 82 83 sourceModel: nested 84 property var expectedData: ([{role1: 3, role2: 2, proxyRole: 42}, {role1: 4, role2: 2, proxyRole: 42}]) 85 } 86 TestCase { 87 name: "BuiltinsFilterTests" 88 function test_filterValue_data() { 89 return [testProxyModel, noRolesFirstTestProxyModel, 90 noRolesFirstTestProxyModelWithProxyRoles, 91 noRolesFirstTestProxyModelWithProxyRolesNested]; 92 } 93 94 function test_filterValue(proxyModel) { 95 if (proxyModel.sourceModel.initModel) 96 proxyModel.sourceModel.initModel() 97 var data = []; 98 for (var i = 0; i < proxyModel.count; i++) 99 data.push(proxyModel.get(i)); 100 101 compare(data, proxyModel.expectedData); 102 } 103 } 104 }