@@ -36,14 +36,8 @@ class TestQgsBrowserModel : public QObject
36
36
void init () {} // will be called before each testfunction is executed.
37
37
void cleanup () {} // will be called after every testfunction.
38
38
39
- void testValid ();
40
- void testDirItemChildren ();
41
39
void testModel ();
42
40
43
- private:
44
- QgsDirectoryItem *mDirItem = nullptr ;
45
- QString mScanItemsSetting ;
46
- bool isValidDirItem ( QgsDirectoryItem *item );
47
41
};
48
42
49
43
void TestQgsBrowserModel::initTestCase ()
@@ -60,109 +54,13 @@ void TestQgsBrowserModel::initTestCase()
60
54
QCoreApplication::setOrganizationName ( QStringLiteral ( " QGIS" ) );
61
55
QCoreApplication::setOrganizationDomain ( QStringLiteral ( " qgis.org" ) );
62
56
QCoreApplication::setApplicationName ( QStringLiteral ( " QGIS-TEST" ) );
63
-
64
- // create a directory item that will be used in all tests...
65
- mDirItem = new QgsDirectoryItem ( nullptr , QStringLiteral ( " Test" ), TEST_DATA_DIR );
66
57
}
67
58
68
59
void TestQgsBrowserModel::cleanupTestCase ()
69
60
{
70
- if ( mDirItem )
71
- delete mDirItem ;
72
-
73
61
QgsApplication::exitQgis ();
74
62
}
75
63
76
- bool TestQgsBrowserModel::isValidDirItem ( QgsDirectoryItem *item )
77
- {
78
- return ( item && item->hasChildren () );
79
- }
80
-
81
- void TestQgsBrowserModel::testValid ()
82
- {
83
- if ( mDirItem )
84
- {
85
- QgsDebugMsg ( QStringLiteral ( " dirItem has %1 children" ).arg ( mDirItem ->rowCount () ) );
86
- }
87
- QVERIFY ( isValidDirItem ( mDirItem ) );
88
- }
89
-
90
- void TestQgsBrowserModel::testDirItemChildren ()
91
- {
92
- QgsSettings settings;
93
- QStringList tmpSettings;
94
- tmpSettings << QString () << QStringLiteral ( " contents" ) << QStringLiteral ( " extension" );
95
- Q_FOREACH ( const QString &tmpSetting, tmpSettings )
96
- {
97
- settings.setValue ( QStringLiteral ( " /qgis/scanItemsInBrowser2" ), tmpSetting );
98
- QgsDirectoryItem *dirItem = new QgsDirectoryItem ( nullptr , QStringLiteral ( " Test" ), TEST_DATA_DIR );
99
- QVERIFY ( isValidDirItem ( dirItem ) );
100
-
101
- QVector<QgsDataItem *> children = dirItem->createChildren ();
102
- for ( int i = 0 ; i < children.size (); i++ )
103
- {
104
- QgsDataItem *dataItem = children[i];
105
- QgsLayerItem *layerItem = dynamic_cast <QgsLayerItem *>( dataItem );
106
- if ( ! layerItem )
107
- continue ;
108
-
109
- // test .vrt and .gz files are not loaded by gdal and ogr
110
- QFileInfo info ( layerItem->path () );
111
- QString lFile = info.fileName ();
112
- QString lProvider = layerItem->providerKey ();
113
- QString errStr = QStringLiteral ( " layer #%1 - %2 provider = %3 tmpSetting = %4" ).arg ( i ).arg ( lFile, lProvider, tmpSetting );
114
-
115
- QgsDebugMsg ( QStringLiteral ( " testing child name=%1 provider=%2 path=%3 tmpSetting = %4" ).arg ( layerItem->name (), lProvider, lFile, tmpSetting ) );
116
-
117
- if ( lFile == QLatin1String ( " landsat.tif" ) )
118
- {
119
- QVERIFY2 ( lProvider == " gdal" , errStr.toLocal8Bit ().constData () );
120
- }
121
- else if ( lFile == QLatin1String ( " points.vrt" ) )
122
- {
123
- QVERIFY2 ( lProvider == " ogr" , errStr.toLocal8Bit ().constData () );
124
- }
125
- else if ( lFile == QLatin1String ( " landsat.vrt" ) )
126
- {
127
- QVERIFY2 ( lProvider == " gdal" , errStr.toLocal8Bit ().constData () );
128
- }
129
- else if ( lFile == QLatin1String ( " landsat_b1.tif.gz" ) )
130
- {
131
- QVERIFY2 ( lProvider == " gdal" , errStr.toLocal8Bit ().constData () );
132
- }
133
- else if ( lFile == QLatin1String ( " points3.geojson.gz" ) )
134
- {
135
- QVERIFY2 ( lProvider == " ogr" , errStr.toLocal8Bit ().constData () );
136
- }
137
-
138
- // test layerName() does not include extension for gdal and ogr items (bug #5621)
139
- QString lName = layerItem->layerName ();
140
- errStr = QStringLiteral ( " layer #%1 - %2 lName = %3 tmpSetting = %4" ).arg ( i ).arg ( lFile, lName, tmpSetting );
141
-
142
- if ( lFile == QLatin1String ( " landsat.tif" ) )
143
- {
144
- QVERIFY2 ( lName == " landsat" , errStr.toLocal8Bit ().constData () );
145
- }
146
- else if ( lFile == QLatin1String ( " points.shp" ) )
147
- {
148
- QVERIFY2 ( lName == " points" , errStr.toLocal8Bit ().constData () );
149
- }
150
- else if ( lFile == QLatin1String ( " landsat_b1.tif.gz" ) )
151
- {
152
- QVERIFY2 ( lName == " landsat_b1" , errStr.toLocal8Bit ().constData () );
153
- }
154
- else if ( lFile == QLatin1String ( " points3.geojson.gz" ) )
155
- {
156
- QVERIFY2 ( lName == " points3" , errStr.toLocal8Bit ().constData () );
157
- }
158
-
159
- }
160
- qDeleteAll ( children );
161
-
162
- delete dirItem;
163
- }
164
- }
165
-
166
64
void TestQgsBrowserModel::testModel ()
167
65
{
168
66
QgsBrowserModel model;
@@ -173,6 +71,59 @@ void TestQgsBrowserModel::testModel()
173
71
QVERIFY ( !model.data ( QModelIndex () ).isValid () );
174
72
QVERIFY ( !model.flags ( QModelIndex () ) );
175
73
QVERIFY ( !model.hasChildren () );
74
+ QVERIFY ( !model.dataItem ( QModelIndex () ) );
75
+
76
+ // add a root child
77
+ QgsDataCollectionItem *rootItem1 = new QgsDataCollectionItem ( nullptr , QStringLiteral ( " Test" ), QStringLiteral ( " root1" ) );
78
+ model.connectItem ( rootItem1 );
79
+ model.mRootItems .append ( rootItem1 );
80
+
81
+ QCOMPARE ( model.rowCount (), 1 );
82
+ QCOMPARE ( model.columnCount (), 1 );
83
+ QVERIFY ( !model.data ( QModelIndex () ).isValid () );
84
+ QVERIFY ( !model.flags ( QModelIndex () ) );
85
+ QVERIFY ( model.hasChildren () );
86
+ QModelIndex root1Index = model.index ( 0 , 0 );
87
+ QVERIFY ( root1Index.isValid () );
88
+ QCOMPARE ( model.rowCount ( root1Index ), 0 );
89
+ QCOMPARE ( model.columnCount ( root1Index ), 1 );
90
+ // initially, we say the item has children, until it's populated and we know for sure
91
+ QVERIFY ( model.hasChildren ( root1Index ) );
92
+ rootItem1->setState ( QgsDataItem::Populated );
93
+ QVERIFY ( !model.hasChildren ( root1Index ) );
94
+ QCOMPARE ( model.data ( root1Index ).toString (), QStringLiteral ( " Test" ) );
95
+ QCOMPARE ( model.data ( root1Index, QgsBrowserModel::PathRole ).toString (), QStringLiteral ( " root1" ) );
96
+ QCOMPARE ( model.dataItem ( root1Index ), rootItem1 );
97
+
98
+ // second root item
99
+ QgsDataCollectionItem *rootItem2 = new QgsDataCollectionItem ( nullptr , QStringLiteral ( " Test2" ), QStringLiteral ( " root2" ) );
100
+ model.connectItem ( rootItem2 );
101
+ model.mRootItems .append ( rootItem2 );
102
+
103
+ QCOMPARE ( model.rowCount (), 2 );
104
+ QVERIFY ( model.hasChildren () );
105
+ QModelIndex root2Index = model.index ( 1 , 0 );
106
+ QVERIFY ( root2Index.isValid () );
107
+ QCOMPARE ( model.rowCount ( root2Index ), 0 );
108
+ QCOMPARE ( model.columnCount ( root2Index ), 1 );
109
+ QCOMPARE ( model.data ( root2Index ).toString (), QStringLiteral ( " Test2" ) );
110
+ QCOMPARE ( model.data ( root2Index, QgsBrowserModel::PathRole ).toString (), QStringLiteral ( " root2" ) );
111
+ QCOMPARE ( model.dataItem ( root2Index ), rootItem2 );
112
+
113
+ // child item
114
+ QgsDataCollectionItem *childItem1 = new QgsDataCollectionItem ( nullptr , QStringLiteral ( " Child1" ), QStringLiteral ( " child1" ) );
115
+ model.connectItem ( childItem1 );
116
+ rootItem1->addChild ( childItem1 );
117
+
118
+ QCOMPARE ( model.rowCount (), 2 );
119
+ QCOMPARE ( model.columnCount (), 1 );
120
+ QCOMPARE ( model.rowCount ( root1Index ), 1 );
121
+ QCOMPARE ( model.columnCount ( root1Index ), 1 );
122
+ QVERIFY ( model.hasChildren ( root1Index ) );
123
+ QModelIndex child1Index = model.index ( 0 , 0 , root1Index );
124
+ QCOMPARE ( model.data ( child1Index ).toString (), QStringLiteral ( " Child1" ) );
125
+ QCOMPARE ( model.data ( child1Index, QgsBrowserModel::PathRole ).toString (), QStringLiteral ( " child1" ) );
126
+ QCOMPARE ( model.dataItem ( child1Index ), childItem1 );
176
127
177
128
}
178
129
0 commit comments