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 }