Skip to content

Commit c49ec67

Browse files
committedAug 21, 2018
Add tests for precision and removeDuplicateNodes
1 parent 8aca375 commit c49ec67

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
 

‎tests/src/python/test_qgsvectorlayer.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2756,6 +2756,45 @@ def testFeatureRequestWithReprojectionAndVirtualFields(self):
27562756
self.assertAlmostEqual(features[4]['virtual'], -65.32, 2)
27572757
self.assertAlmostEqual(features[4].geometry().constGet().x(), -7271389, -5)
27582758

2759+
def testPrecision(self):
2760+
layer = QgsVectorLayer("Polygon?crs=epsg:2056&field=pk:int", "vl", "memory")
2761+
layer.setGeometryPrecision(10)
2762+
geom = QgsGeometry.fromWkt('Polygon ((2596411 1224654, 2596400 1224652, 2596405 1224640, 2596410 1224641, 2596411 1224654))')
2763+
feature = QgsFeature(layer.fields())
2764+
feature.setGeometry(geom)
2765+
layer.startEditing()
2766+
layer.addFeature(feature)
2767+
self.assertGeometriesEqual(QgsGeometry.fromWkt('Polygon ((2596410 1224650, 2596400 1224650, 2596410 1224640, 2596410 1224650))'), feature.geometry(), 'geometry with unsnapped nodes', 'fixed geometry')
2768+
layer.setGeometryPrecision(0.0)
2769+
feature.setGeometry(QgsGeometry.fromWkt('Polygon ((2596411 1224654, 2596400 1224652, 2596405 1224640, 2596410 1224641, 2596411 1224654))'))
2770+
layer.addFeature(feature)
2771+
self.assertGeometriesEqual(QgsGeometry.fromWkt('Polygon ((2596411 1224654, 2596400 1224652, 2596405 1224640, 2596410 1224641, 2596411 1224654))'), feature.geometry(), 'geometry with duplicates', 'unchanged geometry')
2772+
2773+
def testRemoveDuplicateNodes(self):
2774+
layer = QgsVectorLayer("Polygon?crs=epsg:2056&field=pk:int", "vl", "memory")
2775+
layer.setRemoveDuplicateNodes(True)
2776+
geom = QgsGeometry.fromWkt('Polygon ((70 80, 80 90, 80 90, 60 50, 70 80))')
2777+
feature = QgsFeature(layer.fields())
2778+
feature.setGeometry(geom)
2779+
layer.startEditing()
2780+
layer.addFeature(feature)
2781+
self.assertGeometriesEqual(feature.geometry(), QgsGeometry.fromWkt('Polygon ((70 80, 80 90, 60 50, 70 80))'), 'fixed geometry', 'geometry with duplicates')
2782+
layer.setRemoveDuplicateNodes(False)
2783+
feature.setGeometry(QgsGeometry.fromWkt('Polygon ((70 80, 80 90, 80 90, 60 50, 70 80))'))
2784+
layer.addFeature(feature)
2785+
self.assertGeometriesEqual(feature.geometry(), QgsGeometry.fromWkt('Polygon ((70 80, 80 90, 80 90, 60 50, 70 80))'), 'unchanged geometry', 'geometry with duplicates')
2786+
2787+
def testPrecisionAndDuplicateNodes(self):
2788+
layer = QgsVectorLayer("Polygon?crs=epsg:2056&field=pk:int", "vl", "memory")
2789+
layer.setGeometryPrecision(10)
2790+
layer.setRemoveDuplicateNodes(True)
2791+
geom = QgsGeometry.fromWkt('Polygon ((2596411 1224654, 2596400 1224652, 2596402 1224653, 2596405 1224640, 2596410 1224641, 2596411 1224654))')
2792+
feature = QgsFeature(layer.fields())
2793+
feature.setGeometry(geom)
2794+
layer.startEditing()
2795+
layer.addFeature(feature)
2796+
self.assertGeometriesEqual(QgsGeometry.fromWkt('Polygon ((2596410 1224650, 2596400 1224650, 2596410 1224640, 2596410 1224650))'), feature.geometry(), 'geometry with unsnapped nodes', 'fixed geometry')
2797+
27592798

27602799
class TestQgsVectorLayerSourceAddedFeaturesInBuffer(unittest.TestCase, FeatureSourceTestCase):
27612800

0 commit comments

Comments
 (0)
Please sign in to comment.