tst_helpers.qml
1 import QtQuick 2.0 2 import QtQml 2.2 3 import QtTest 1.1 4 import SortFilterProxyModel 0.2 5 import SortFilterProxyModel.Test 0.2 6 7 Item { 8 ListModel { 9 id: dataModel 10 ListElement { 11 firstName: "Tupac" 12 lastName: "Shakur" 13 } 14 ListElement { 15 firstName: "Charles" 16 lastName: "Aznavour" 17 } 18 ListElement { 19 firstName: "Frank" 20 lastName: "Sinatra" 21 } 22 ListElement { 23 firstName: "Laurent" 24 lastName: "Garnier" 25 } 26 ListElement { 27 firstName: "Phillipe" 28 lastName: "Risoli" 29 } 30 } 31 SortFilterProxyModel { 32 id: testModel 33 sourceModel: dataModel 34 } 35 SortFilterProxyModel { 36 id: testModel2 37 sourceModel: dataModel 38 filters: ValueFilter { 39 inverted: true 40 roleName: "lastName" 41 value: "Sinatra" 42 } 43 sorters: [ 44 RoleSorter { roleName: "lastName"}, 45 RoleSorter { roleName: "firstName"} 46 ] 47 } 48 49 TestCase { 50 name: "Helper functions" 51 52 function test_getWithRoleName() { 53 compare(testModel.get(0, "lastName"), "Shakur"); 54 } 55 56 function test_getWithoutRoleName() { 57 compare(testModel.get(1), { firstName: "Charles", lastName: "Aznavour"}); 58 } 59 60 function test_roleForName() { 61 compare(testModel.data(testModel.index(0, 0), testModel.roleForName("firstName")), "Tupac"); 62 compare(testModel.data(testModel.index(1, 0), testModel.roleForName("lastName")), "Aznavour"); 63 } 64 65 function test_mapToSource() { 66 compare(testModel2.mapToSource(3), 0); 67 compare(testModel2.mapToSource(4), -1); 68 } 69 70 function test_mapToSourceLoop() { 71 for (var i = 0; i < testModel2.count; ++i) { 72 var sourceRow = testModel2.mapToSource(i); 73 compare(testModel2.get(i).lastName, dataModel.get(sourceRow).lastName); 74 } 75 } 76 77 function test_mapToSourceLoop_index() { 78 for (var i = 0; i < testModel2.count; ++i) { 79 var proxyIndex = testModel2.index(i, 0); 80 var sourceIndex = testModel2.mapToSource(proxyIndex); 81 var roleNumber = testModel2.roleForName("lastName"); 82 compare(testModel2.data(proxyIndex, roleNumber), dataModel.data(sourceIndex, roleNumber)); 83 } 84 } 85 86 function test_mapFromSource() { 87 compare(testModel2.mapFromSource(1), 0); 88 compare(testModel2.mapFromSource(2), -1); 89 } 90 91 function test_mapFromSourceLoop() { 92 for (var i = 0; i < dataModel.count; ++i) { 93 var proxyRow = testModel2.mapFromSource(i); 94 if (proxyRow !== -1) { 95 compare(dataModel.get(i).lastName, testModel2.get(proxyRow).lastName); 96 } 97 } 98 } 99 100 function test_mapFromSourceLoop_index() { 101 for (var i = 0; i < dataModel.count; ++i) { 102 var sourceIndex = dataModel.index(i, 0); 103 var proxyIndex = testModel2.mapFromSource(sourceIndex); 104 var roleNumber = testModel2.roleForName("lastName"); 105 if (proxyIndex.valid) 106 compare(testModel2.data(proxyIndex, roleNumber), dataModel.data(sourceIndex, roleNumber)); 107 } 108 } 109 110 } 111 }