@@ -633,16 +633,12 @@ def testGeopackageLargeFID(self):
633
633
self .assertTrue (vl .deleteFeature (1234567890123 ))
634
634
self .assertTrue (vl .commitChanges ())
635
635
636
- def test_SplitFeature (self ):
637
- """Test gpkg feature can be split """
636
+ def test_AddFeatureNullFid (self ):
637
+ """Test gpkg feature with NULL fid can be added """
638
638
tmpfile = os .path .join (self .basetestpath , 'testGeopackageSplitFeatures.gpkg' )
639
639
ds = ogr .GetDriverByName ('GPKG' ).CreateDataSource (tmpfile )
640
640
lyr = ds .CreateLayer ('test' , geom_type = ogr .wkbPolygon )
641
641
lyr .CreateField (ogr .FieldDefn ('str_field' , ogr .OFTString ))
642
- f = ogr .Feature (lyr .GetLayerDefn ())
643
- f .SetGeometry (ogr .CreateGeometryFromWkt ('POLYGON ((0 0,0 1,1 1,1 0,0 0))' ))
644
- lyr .CreateFeature (f )
645
- f = None
646
642
ds = None
647
643
648
644
layer = QgsVectorLayer (u'{}' .format (tmpfile ) + "|layername=" + "test" , 'test' , u'ogr' )
@@ -652,6 +648,30 @@ def test_SplitFeature(self):
652
648
pkfield = fields .at (0 )
653
649
self .assertTrue (pkfield .constraints ().constraints () & QgsFieldConstraints .ConstraintUnique )
654
650
651
+ # Test add feature with default Fid (NULL)
652
+ layer .startEditing ()
653
+ f = QgsFeature ()
654
+ feat = QgsFeature (layer .fields ())
655
+ feat .setGeometry (QgsGeometry .fromWkt ('Polygon ((0 0, 0 1, 1 1, 1 0, 0 0))' ))
656
+ feat .setAttribute (1 , 'test_value' )
657
+ layer .addFeature (feat )
658
+ self .assertTrue (layer .commitChanges ())
659
+ self .assertEqual (layer .featureCount (), 1 )
660
+
661
+ def test_SplitFeature (self ):
662
+ """Test gpkg feature can be split"""
663
+ tmpfile = os .path .join (self .basetestpath , 'testGeopackageSplitFeatures.gpkg' )
664
+ ds = ogr .GetDriverByName ('GPKG' ).CreateDataSource (tmpfile )
665
+ lyr = ds .CreateLayer ('test' , geom_type = ogr .wkbPolygon )
666
+ lyr .CreateField (ogr .FieldDefn ('str_field' , ogr .OFTString ))
667
+ f = ogr .Feature (lyr .GetLayerDefn ())
668
+ f .SetGeometry (ogr .CreateGeometryFromWkt ('POLYGON ((0 0,0 1,1 1,1 0,0 0))' ))
669
+ lyr .CreateFeature (f )
670
+ f = None
671
+ ds = None
672
+
673
+ # Split features
674
+ layer = QgsVectorLayer (u'{}' .format (tmpfile ) + "|layername=" + "test" , 'test' , u'ogr' )
655
675
self .assertTrue (layer .isValid ())
656
676
self .assertTrue (layer .isSpatial ())
657
677
self .assertEqual ([f for f in layer .getFeatures ()][0 ].geometry ().asWkt (), 'Polygon ((0 0, 0 1, 1 1, 1 0, 0 0))' )
0 commit comments