@@ -53,6 +53,7 @@ class TestQgsGeometry : public QObject
53
53
54
54
void copy ();
55
55
void assignment ();
56
+ void asVariant (); // test conversion to and from a QVariant
56
57
57
58
void fromQgsPoint ();
58
59
void fromQPoint ();
@@ -256,6 +257,35 @@ void TestQgsGeometry::assignment()
256
257
QCOMPARE ( original.geometry ()->vertexAt ( QgsVertexId ( 0 , 0 , 0 ) ).y (), 2.0 );
257
258
}
258
259
260
+ void TestQgsGeometry::asVariant ()
261
+ {
262
+ // create a point geometry
263
+ QgsGeometry original ( new QgsPointV2 ( 1.0 , 2.0 ) );
264
+ QCOMPARE ( original.geometry ()->vertexAt ( QgsVertexId ( 0 , 0 , 0 ) ).x (), 1.0 );
265
+ QCOMPARE ( original.geometry ()->vertexAt ( QgsVertexId ( 0 , 0 , 0 ) ).y (), 2.0 );
266
+
267
+ // convert to and from a QVariant
268
+ QVariant var = QVariant::fromValue ( original );
269
+ QVERIFY ( var.isValid () );
270
+
271
+ QgsGeometry fromVar = qvariant_cast<QgsGeometry>( var );
272
+ QCOMPARE ( fromVar.geometry ()->vertexAt ( QgsVertexId ( 0 , 0 , 0 ) ).x (), 1.0 );
273
+ QCOMPARE ( fromVar.geometry ()->vertexAt ( QgsVertexId ( 0 , 0 , 0 ) ).y (), 2.0 );
274
+
275
+ // also check copying variant
276
+ QVariant var2 = var;
277
+ QVERIFY ( var2.isValid () );
278
+ QgsGeometry fromVar2 = qvariant_cast<QgsGeometry>( var2 );
279
+ QCOMPARE ( fromVar2.geometry ()->vertexAt ( QgsVertexId ( 0 , 0 , 0 ) ).x (), 1.0 );
280
+ QCOMPARE ( fromVar2.geometry ()->vertexAt ( QgsVertexId ( 0 , 0 , 0 ) ).y (), 2.0 );
281
+
282
+ // modify original and check detachment
283
+ original.setGeometry ( new QgsPointV2 ( 3.0 , 4.0 ) );
284
+ QgsGeometry fromVar3 = qvariant_cast<QgsGeometry>( var );
285
+ QCOMPARE ( fromVar3.geometry ()->vertexAt ( QgsVertexId ( 0 , 0 , 0 ) ).x (), 1.0 );
286
+ QCOMPARE ( fromVar3.geometry ()->vertexAt ( QgsVertexId ( 0 , 0 , 0 ) ).y (), 2.0 );
287
+ }
288
+
259
289
void TestQgsGeometry::fromQgsPoint ()
260
290
{
261
291
QgsPoint point ( 1.0 , 2.0 );
0 commit comments