tst_rangefilter.qml
1 import QtQuick 2.0 2 import SortFilterProxyModel 0.2 3 import QtQml.Models 2.2 4 import QtTest 1.1 5 6 Item { 7 property list<RangeFilter> filters: [ 8 RangeFilter { 9 property string tag: "inclusive" 10 property int expectedModelCount: 3 11 property var expectedValues: [3, 2, 4] 12 property QtObject dataModel: dataModel0 13 roleName: "value"; minimumValue: 2; maximumValue: 4 14 }, 15 RangeFilter { 16 property string tag: "explicitInclusive" 17 property int expectedModelCount: 3 18 property var expectedValues: [3, 2, 4] 19 property QtObject dataModel: dataModel0 20 roleName: "value"; minimumValue: 2; maximumValue: 4; minimumInclusive: true; maximumInclusive: true 21 }, 22 RangeFilter { 23 property string tag: "inclusiveMinExclusiveMax" 24 property int expectedModelCount: 2 25 property var expectedValues: [2, 3] 26 property QtObject dataModel: dataModel1 27 roleName: "value"; minimumValue: 2; maximumValue: 4; minimumInclusive: true; maximumInclusive: false 28 }, 29 RangeFilter { 30 property string tag: "exclusiveMinInclusiveMax" 31 property int expectedModelCount: 2 32 property var expectedValues: [3, 4] 33 property QtObject dataModel: dataModel1 34 roleName: "value"; minimumValue: 2; maximumValue: 4; minimumInclusive: false; maximumInclusive: true 35 }, 36 RangeFilter { 37 property string tag: "exclusive" 38 property int expectedModelCount: 1 39 property var expectedValues: [3] 40 property QtObject dataModel: dataModel1 41 roleName: "value"; minimumValue: 2; maximumValue: 4; minimumInclusive: false; maximumInclusive: false 42 }, 43 RangeFilter { 44 property string tag: "outOfBoundsRange" 45 property var expectedValues: [] 46 property QtObject dataModel: dataModel1 47 roleName: "value"; minimumValue: 4; maximumValue: 2 48 }, 49 RangeFilter { 50 objectName: tag 51 property string tag: "noMinimum" 52 property var expectedValues: [3, 1, 2] 53 property QtObject dataModel: dataModel0 54 roleName: "value"; maximumValue: 3 55 } 56 ] 57 58 ListModel { 59 id: dataModel0 60 ListElement { value: 5 } 61 ListElement { value: 3 } 62 ListElement { value: 1 } 63 ListElement { value: 2 } 64 ListElement { value: 4 } 65 } 66 67 ListModel { 68 id: dataModel1 69 ListElement { value: 5 } 70 ListElement { value: 2 } 71 ListElement { value: 3 } 72 ListElement { value: 1 } 73 ListElement { value: 4 } 74 } 75 76 SortFilterProxyModel { id: testModel } 77 78 TestCase { 79 name:"RangeFilterTests" 80 81 function test_minMax_data() { 82 return filters; 83 } 84 85 function test_minMax(filter) { 86 testModel.sourceModel = filter.dataModel; 87 testModel.filters = filter; 88 89 verify(testModel.count === filter.expectedValues.length, 90 "Expected count " + filter.expectedValues.length + ", actual count: " + testModel.count); 91 for (var i = 0; i < testModel.count; i++) 92 { 93 var modelValue = testModel.get(i, filter.roleName); 94 verify(modelValue === filter.expectedValues[i], 95 "Expected testModel value " + filter.expectedValues[i] + ", actual: " + modelValue); 96 } 97 } 98 } 99 }