mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-06 00:07:29 -04:00
add tests
This commit is contained in:
parent
9eaa1a722f
commit
0c2c4c63b8
@ -46,6 +46,7 @@ class TestQgsMapToolReshape: public QObject
|
||||
|
||||
void testReshapeZ();
|
||||
void testTopologicalEditing();
|
||||
void testAvoidIntersectionAndTopoEdit();
|
||||
void reshapeWithBindingLine();
|
||||
|
||||
private:
|
||||
@ -56,6 +57,7 @@ class TestQgsMapToolReshape: public QObject
|
||||
QgsVectorLayer *mLayerPointZ = nullptr;
|
||||
QgsVectorLayer *mLayerPolygonZ = nullptr;
|
||||
QgsVectorLayer *mLayerTopo = nullptr;
|
||||
QgsVectorLayer *mLayerTopo2 = nullptr;
|
||||
};
|
||||
|
||||
TestQgsMapToolReshape::TestQgsMapToolReshape() = default;
|
||||
@ -102,6 +104,9 @@ void TestQgsMapToolReshape::initTestCase()
|
||||
mLayerTopo = new QgsVectorLayer( QStringLiteral( "Polygon?crs=EPSG:3946" ), QStringLiteral( "topo" ), QStringLiteral( "memory" ) );
|
||||
QVERIFY( mLayerTopo->isValid() );
|
||||
|
||||
mLayerTopo2 = new QgsVectorLayer( QStringLiteral( "Polygon?crs=EPSG:3946" ), QStringLiteral( "topo2" ), QStringLiteral( "memory" ) );
|
||||
QVERIFY( mLayerTopo2->isValid() );
|
||||
|
||||
mLayerLineZ->startEditing();
|
||||
const QString wkt1 = "LineStringZ (0 0 0, 1 1 0, 1 2 0)";
|
||||
const QString wkt2 = "LineStringZ (2 1 5, 3 3 5)";
|
||||
@ -156,6 +161,13 @@ void TestQgsMapToolReshape::initTestCase()
|
||||
QCOMPARE( mLayerTopo->getFeature( 1 ).geometry().asWkt(), wkt6 );
|
||||
QCOMPARE( mLayerTopo->getFeature( 2 ).geometry().asWkt(), wkt7 );
|
||||
|
||||
mLayerTopo2->startEditing();
|
||||
QgsFeature f8;
|
||||
f8.setGeometry( QgsGeometry::fromWkt( QStringLiteral( "Polygon ((0 5, 4 5, 4 7, 0 7))" ) ) );
|
||||
mLayerTopo2->dataProvider()->addFeatures( QgsFeatureList() << f8 );
|
||||
QCOMPARE( mLayerTopo2->featureCount(), 1 );
|
||||
QCOMPARE( mLayerTopo2->getFeature( 1 ).geometry().asWkt(), QStringLiteral( "Polygon ((0 5, 4 5, 4 7, 0 7))" ) );
|
||||
|
||||
QgsSnappingConfig cfg = mCanvas->snappingUtils()->config();
|
||||
cfg.setMode( Qgis::SnappingMode::AllLayers );
|
||||
cfg.setTolerance( 100 );
|
||||
@ -169,6 +181,7 @@ void TestQgsMapToolReshape::initTestCase()
|
||||
mCanvas->snappingUtils()->locatorForLayer( mLayerPointZ )->init();
|
||||
mCanvas->snappingUtils()->locatorForLayer( mLayerPolygonZ )->init();
|
||||
mCanvas->snappingUtils()->locatorForLayer( mLayerTopo )->init();
|
||||
mCanvas->snappingUtils()->locatorForLayer( mLayerTopo2 )->init();
|
||||
|
||||
// create the tool
|
||||
mCaptureTool = new QgsMapToolReshape( mCanvas );
|
||||
@ -247,8 +260,48 @@ void TestQgsMapToolReshape::testTopologicalEditing()
|
||||
QCOMPARE( mLayerTopo->getFeature( 2 ).geometry().asWkt(), wkt2 );
|
||||
|
||||
QgsProject::instance()->setTopologicalEditing( topologicalEditing );
|
||||
}
|
||||
|
||||
void TestQgsMapToolReshape::testAvoidIntersectionAndTopoEdit()
|
||||
{
|
||||
QList<QgsMapLayer *> layers = { mLayerTopo, mLayerTopo2 };
|
||||
QgsProject::instance()->addMapLayers( layers );
|
||||
mCanvas->setLayers( layers );
|
||||
|
||||
// backup project settings
|
||||
const bool topologicalEditing = QgsProject::instance()->topologicalEditing();
|
||||
const Qgis::AvoidIntersectionsMode mode( QgsProject::instance()->avoidIntersectionsMode() );
|
||||
const QList<QgsVectorLayer *> vlayers = QgsProject::instance()->avoidIntersectionsLayers();
|
||||
const bool isAutoSnapEnabled = mCaptureTool->isAutoSnapEnabled();
|
||||
|
||||
QgsProject::instance()->setAvoidIntersectionsMode( Qgis::AvoidIntersectionsMode::AvoidIntersectionsLayers );
|
||||
QgsProject::instance()->setAvoidIntersectionsLayers( { mLayerTopo, mLayerTopo2 } );
|
||||
QgsProject::instance()->setTopologicalEditing( true );
|
||||
mCanvas->setCurrentLayer( mLayerTopo2 );
|
||||
mCaptureTool->setAutoSnapEnabled( false );
|
||||
TestQgsMapToolAdvancedDigitizingUtils utils( mCaptureTool );
|
||||
|
||||
// reshape mLayerTopo2 feature 1 with a point inside mLayerTopo feature 1, there is 2 topo point added on this last
|
||||
utils.mouseClick( 0, 5, Qt::LeftButton, Qt::KeyboardModifiers() );
|
||||
utils.mouseClick( 2, 3, Qt::LeftButton, Qt::KeyboardModifiers() );
|
||||
utils.mouseClick( 4, 5, Qt::LeftButton, Qt::KeyboardModifiers() );
|
||||
utils.mouseClick( 4, 5, Qt::RightButton );
|
||||
|
||||
QCOMPARE( mLayerTopo2->getFeature( 1 ).geometry().asWkt(), QStringLiteral( "Polygon ((0 5, 0 7, 4 7, 4 5, 3 4, 1 4, 0 5))" ) );
|
||||
QCOMPARE( mLayerTopo->getFeature( 1 ).geometry().asWkt(), QStringLiteral( "Polygon ((0 0, 4 0, 4 4, 3 4, 1 4, 0 4))" ) );
|
||||
QCOMPARE( mLayerTopo->getFeature( 2 ).geometry().asWkt(), QStringLiteral( "Polygon ((7 0, 8 0, 8 4, 7 4))" ) );
|
||||
|
||||
mLayerTopo2->undoStack()->undo();
|
||||
mLayerTopo->undoStack()->undo();
|
||||
|
||||
QCOMPARE( mLayerTopo2->getFeature( 1 ).geometry().asWkt(), QStringLiteral( "Polygon ((0 5, 4 5, 4 7, 0 7))" ) );
|
||||
QCOMPARE( mLayerTopo->getFeature( 1 ).geometry().asWkt(), QStringLiteral( "Polygon ((0 0, 4 0, 4 4, 0 4))" ) );
|
||||
QCOMPARE( mLayerTopo->getFeature( 2 ).geometry().asWkt(), QStringLiteral( "Polygon ((7 0, 8 0, 8 4, 7 4))" ) );
|
||||
|
||||
QgsProject::instance()->setTopologicalEditing( topologicalEditing );
|
||||
QgsProject::instance()->setAvoidIntersectionsMode( mode );
|
||||
QgsProject::instance()->setAvoidIntersectionsLayers( vlayers );
|
||||
mCaptureTool->setAutoSnapEnabled( isAutoSnapEnabled );
|
||||
}
|
||||
|
||||
void TestQgsMapToolReshape::reshapeWithBindingLine()
|
||||
|
Loading…
x
Reference in New Issue
Block a user