@@ -51,6 +51,7 @@ class TestQgsMeshLayer : public QObject
51
51
52
52
void test_write_read_project ();
53
53
void test_read_mesh ();
54
+ void test_read_bed_elevation_dataset ();
54
55
void test_read_vertex_scalar_dataset ();
55
56
void test_read_vertex_vector_dataset ();
56
57
void test_read_face_scalar_dataset ();
@@ -82,19 +83,20 @@ void TestQgsMeshLayer::initTestCase()
82
83
mMemoryLayer = new QgsMeshLayer ( readFile ( " /quad_and_triangle.txt" ), " Triangle and Quad Memory" , " mesh_memory" );
83
84
QVERIFY ( mMemoryLayer ->isValid () );
84
85
QCOMPARE ( mMemoryLayer ->dataProvider ()->extraDatasets ().count (), 0 );
86
+ mMemoryLayer ->dataProvider ()->addDataset ( readFile ( " /quad_and_triangle_bed_elevation.txt" ) );
85
87
mMemoryLayer ->dataProvider ()->addDataset ( readFile ( " /quad_and_triangle_vertex_scalar.txt" ) );
86
88
mMemoryLayer ->dataProvider ()->addDataset ( readFile ( " /quad_and_triangle_vertex_vector.txt" ) );
87
89
mMemoryLayer ->dataProvider ()->addDataset ( readFile ( " /quad_and_triangle_face_scalar.txt" ) );
88
90
mMemoryLayer ->dataProvider ()->addDataset ( readFile ( " /quad_and_triangle_face_vector.txt" ) );
89
- QCOMPARE ( mMemoryLayer ->dataProvider ()->extraDatasets ().count (), 4 );
91
+ QCOMPARE ( mMemoryLayer ->dataProvider ()->extraDatasets ().count (), 5 );
90
92
91
93
QgsProject::instance ()->addMapLayers (
92
94
QList<QgsMapLayer *>() << mMemoryLayer );
93
95
94
96
// MDAL Layer
95
97
QString uri ( mDataDir + " /quad_and_triangle.2dm" );
96
98
mMdalLayer = new QgsMeshLayer ( uri, " Triangle and Quad MDAL" , " mdal" );
97
- QCOMPARE ( mMdalLayer ->dataProvider ()->extraDatasets (). count (), 0 );
99
+ QCOMPARE ( mMdalLayer ->dataProvider ()->datasetGroupCount (), 1 ); // bed elevation is already in the 2dm
98
100
mMdalLayer ->dataProvider ()->addDataset ( mDataDir + " /quad_and_triangle_vertex_scalar.dat" );
99
101
mMdalLayer ->dataProvider ()->addDataset ( mDataDir + " /quad_and_triangle_vertex_vector.dat" );
100
102
QCOMPARE ( mMdalLayer ->dataProvider ()->extraDatasets ().count (), 2 );
@@ -142,6 +144,41 @@ void TestQgsMeshLayer::test_read_mesh()
142
144
}
143
145
}
144
146
147
+ void TestQgsMeshLayer::test_read_bed_elevation_dataset ()
148
+ {
149
+ QList<const QgsMeshDataProvider *> dataProviders;
150
+ dataProviders.append ( mMemoryLayer ->dataProvider () );
151
+ dataProviders.append ( mMdalLayer ->dataProvider () );
152
+
153
+ foreach ( auto dp, dataProviders )
154
+ {
155
+ QVERIFY ( dp != nullptr );
156
+ QVERIFY ( dp->isValid () );
157
+
158
+ QCOMPARE ( 5 , dp->datasetGroupCount () );
159
+
160
+ QgsMeshDatasetIndex ds ( 0 , 0 );
161
+
162
+ const QgsMeshDatasetGroupMetadata meta = dp->datasetGroupMetadata ( ds );
163
+ QVERIFY ( meta.name ().contains ( " Elevation" ) );
164
+ QVERIFY ( meta.isScalar () );
165
+ QVERIFY ( meta.dataType () == QgsMeshDatasetGroupMetadata::DataOnVertices );
166
+
167
+ const QgsMeshDatasetMetadata dmeta = dp->datasetMetadata ( ds );
168
+ QVERIFY ( qgsDoubleNear ( dmeta.time (), 0 ) );
169
+ QVERIFY ( dmeta.isValid () );
170
+
171
+ // We have 5 values, since dp->vertexCount() = 5
172
+ QCOMPARE ( QgsMeshDatasetValue ( 20 ), dp->datasetValue ( ds, 0 ) );
173
+ QCOMPARE ( QgsMeshDatasetValue ( 30 ), dp->datasetValue ( ds, 1 ) );
174
+ QCOMPARE ( QgsMeshDatasetValue ( 40 ), dp->datasetValue ( ds, 2 ) );
175
+ QCOMPARE ( QgsMeshDatasetValue ( 50 ), dp->datasetValue ( ds, 3 ) );
176
+ QCOMPARE ( QgsMeshDatasetValue ( 10 ), dp->datasetValue ( ds, 4 ) );
177
+
178
+ QVERIFY ( dp->isFaceActive ( ds, 0 ) );
179
+ }
180
+ }
181
+
145
182
void TestQgsMeshLayer::test_read_vertex_scalar_dataset ()
146
183
{
147
184
QList<const QgsMeshDataProvider *> dataProviders;
@@ -153,11 +190,11 @@ void TestQgsMeshLayer::test_read_vertex_scalar_dataset()
153
190
QVERIFY ( dp != nullptr );
154
191
QVERIFY ( dp->isValid () );
155
192
156
- QCOMPARE ( 4 , dp->datasetGroupCount () );
193
+ QCOMPARE ( 5 , dp->datasetGroupCount () );
157
194
158
195
for ( int i = 0 ; i < 2 ; ++i )
159
196
{
160
- QgsMeshDatasetIndex ds ( 0 , i );
197
+ QgsMeshDatasetIndex ds ( 1 , i );
161
198
162
199
const QgsMeshDatasetGroupMetadata meta = dp->datasetGroupMetadata ( ds );
163
200
if ( meta.extraOptions ().count () == 2 )
@@ -196,11 +233,11 @@ void TestQgsMeshLayer::test_read_vertex_vector_dataset()
196
233
QVERIFY ( dp != nullptr );
197
234
QVERIFY ( dp->isValid () );
198
235
199
- QCOMPARE ( 4 , dp->datasetGroupCount () );
236
+ QCOMPARE ( 5 , dp->datasetGroupCount () );
200
237
201
238
for ( int i = 0 ; i < 2 ; ++i )
202
239
{
203
- QgsMeshDatasetIndex ds ( 1 , i );
240
+ QgsMeshDatasetIndex ds ( 2 , i );
204
241
205
242
const QgsMeshDatasetGroupMetadata meta = dp->datasetGroupMetadata ( ds );
206
243
if ( meta.extraOptions ().count () == 2 )
@@ -236,11 +273,11 @@ void TestQgsMeshLayer::test_read_face_scalar_dataset()
236
273
QVERIFY ( dp != nullptr );
237
274
QVERIFY ( dp->isValid () );
238
275
239
- QCOMPARE ( 4 , dp->datasetGroupCount () );
276
+ QCOMPARE ( 5 , dp->datasetGroupCount () );
240
277
241
278
for ( int i = 0 ; i < 2 ; ++i )
242
279
{
243
- QgsMeshDatasetIndex ds ( 2 , i );
280
+ QgsMeshDatasetIndex ds ( 3 , i );
244
281
245
282
const QgsMeshDatasetGroupMetadata meta = dp->datasetGroupMetadata ( ds );
246
283
if ( meta.extraOptions ().count () == 2 )
@@ -274,11 +311,11 @@ void TestQgsMeshLayer::test_read_face_vector_dataset()
274
311
QVERIFY ( dp != nullptr );
275
312
QVERIFY ( dp->isValid () );
276
313
277
- QCOMPARE ( 4 , dp->datasetGroupCount () );
314
+ QCOMPARE ( 5 , dp->datasetGroupCount () );
278
315
279
316
for ( int i = 0 ; i < 2 ; ++i )
280
317
{
281
- QgsMeshDatasetIndex ds ( 3 , i );
318
+ QgsMeshDatasetIndex ds ( 4 , i );
282
319
283
320
const QgsMeshDatasetGroupMetadata meta = dp->datasetGroupMetadata ( ds );
284
321
if ( meta.extraOptions ().count () == 2 )
@@ -308,11 +345,11 @@ void TestQgsMeshLayer::test_read_vertex_scalar_dataset_with_inactive_face()
308
345
QgsMeshDataProvider *dp = layer.dataProvider ();
309
346
QVERIFY ( dp != nullptr );
310
347
QVERIFY ( dp->isValid () );
311
- QCOMPARE ( 1 , dp->datasetGroupCount () );
348
+ QCOMPARE ( 2 , dp->datasetGroupCount () );
312
349
313
350
for ( int i = 0 ; i < 2 ; ++i )
314
351
{
315
- QgsMeshDatasetIndex ds ( 0 , i );
352
+ QgsMeshDatasetIndex ds ( 1 , i );
316
353
317
354
const QgsMeshDatasetGroupMetadata meta = dp->datasetGroupMetadata ( ds );
318
355
QCOMPARE ( meta.name (), QString ( " VertexScalarDatasetWithInactiveFace1" ) );
0 commit comments