diff --git a/src/core/geometry/qgscurvepolygon.cpp b/src/core/geometry/qgscurvepolygon.cpp index f313be4cf523..000fda5f0712 100644 --- a/src/core/geometry/qgscurvepolygon.cpp +++ b/src/core/geometry/qgscurvepolygon.cpp @@ -80,11 +80,11 @@ QgsCurvePolygon::QgsCurvePolygon( const QgsCurvePolygon &p ) mValidityFailureReason = p.mValidityFailureReason; } +// cppcheck-suppress operatorEqVarError QgsCurvePolygon &QgsCurvePolygon::operator=( const QgsCurvePolygon &p ) { if ( &p != this ) { - clearCache(); QgsSurface::operator=( p ); if ( p.mExteriorRing ) { diff --git a/tests/src/core/geometry/testqgscurvepolygon.cpp b/tests/src/core/geometry/testqgscurvepolygon.cpp index 36f160c326ae..58cf00763e1e 100644 --- a/tests/src/core/geometry/testqgscurvepolygon.cpp +++ b/tests/src/core/geometry/testqgscurvepolygon.cpp @@ -150,22 +150,37 @@ void TestQgsCurvePolygon::testCopyConstructor() QgsCurvePolygon poly2( poly1 ); QCOMPARE( poly1, poly2 ); - QgsCircularString *ext = new QgsCircularString(); - ext->setPoints( QgsPointSequence() << QgsPoint( Qgis::WkbType::PointZM, 0, 0, 1, 5 ) - << QgsPoint( Qgis::WkbType::PointZM, 0, 10, 2, 6 ) << QgsPoint( Qgis::WkbType::PointZM, 10, 10, 3, 7 ) - << QgsPoint( Qgis::WkbType::PointZM, 10, 0, 4, 8 ) << QgsPoint( Qgis::WkbType::PointZM, 0, 0, 1, 9 ) ); - poly1.setExteriorRing( ext ); - - QgsCircularString *ring = new QgsCircularString(); - ring->setPoints( QgsPointSequence() << QgsPoint( Qgis::WkbType::PointZM, 1, 1, 1, 2 ) - << QgsPoint( Qgis::WkbType::PointZM, 1, 9, 2, 3 ) << QgsPoint( Qgis::WkbType::PointZM, 9, 9, 3, 6 ) - << QgsPoint( Qgis::WkbType::PointZM, 9, 1, 4, 4 ) << QgsPoint( Qgis::WkbType::PointZM, 1, 1, 1, 7 ) ); - poly1.addInteriorRing( ring ); + QgsCircularString *ext1 = new QgsCircularString(); + ext1->setPoints( QgsPointSequence() << QgsPoint( Qgis::WkbType::PointZM, 0, 0, 1, 5 ) + << QgsPoint( Qgis::WkbType::PointZM, 0, 10, 2, 6 ) << QgsPoint( Qgis::WkbType::PointZM, 10, 10, 3, 7 ) + << QgsPoint( Qgis::WkbType::PointZM, 10, 0, 4, 8 ) << QgsPoint( Qgis::WkbType::PointZM, 0, 0, 1, 9 ) ); + poly1.setExteriorRing( ext1 ); + + QgsCircularString *ring1 = new QgsCircularString(); + ring1->setPoints( QgsPointSequence() << QgsPoint( Qgis::WkbType::PointZM, 1, 1, 1, 2 ) + << QgsPoint( Qgis::WkbType::PointZM, 1, 9, 2, 3 ) << QgsPoint( Qgis::WkbType::PointZM, 9, 9, 3, 6 ) + << QgsPoint( Qgis::WkbType::PointZM, 9, 1, 4, 4 ) << QgsPoint( Qgis::WkbType::PointZM, 1, 1, 1, 7 ) ); + poly1.addInteriorRing( ring1 ); QgsCurvePolygon poly3( poly1 ); QCOMPARE( poly1, poly3 ); QgsCurvePolygon poly4; + QgsCircularString *ext2 = new QgsCircularString(); + ext2->setPoints( QgsPointSequence() << QgsPoint( Qgis::WkbType::PointZ, 0, 0, 1 ) + << QgsPoint( Qgis::WkbType::PointZ, 0, 10, 2 ) << QgsPoint( Qgis::WkbType::PointZ, 10, 10, 3 ) + << QgsPoint( Qgis::WkbType::PointZ, 10, 0, 4 ) << QgsPoint( Qgis::WkbType::PointZ, 0, 0, 1 ) ); + poly4.setExteriorRing( ext2 ); + QgsCircularString *ring2 = new QgsCircularString(); + ring2->setPoints( QgsPointSequence() << QgsPoint( Qgis::WkbType::PointZ, 1, 1, 1 ) + << QgsPoint( Qgis::WkbType::PointZ, 1, 9, 2 ) << QgsPoint( Qgis::WkbType::PointZ, 9, 9, 3 ) + << QgsPoint( Qgis::WkbType::PointZ, 9, 1, 4 ) << QgsPoint( Qgis::WkbType::PointZ, 1, 1, 1 ) ); + poly4.addInteriorRing( ring2 ); + QVERIFY( poly4.exteriorRing() ); + QCOMPARE( poly4.numInteriorRings(), 1 ); + QVERIFY( poly4.interiorRing( 0 ) ); + QVERIFY( poly2 != poly4 ); + poly4 = poly2; QCOMPARE( poly2, poly4 ); poly4 = poly1;