|
16 | 16 | import os
|
17 | 17 |
|
18 | 18 | from qgis.core import (QgsVectorLayer,
|
| 19 | + QgsField, |
19 | 20 | QgsFeature,
|
20 | 21 | QgsFeatureRequest,
|
21 | 22 | QgsGeometry,
|
@@ -841,6 +842,29 @@ def test_joined_layers_conversion(self):
|
841 | 842 |
|
842 | 843 | QgsMapLayerRegistry.instance().removeMapLayers([v1, v2, v3])
|
843 | 844 |
|
| 845 | + def testFieldsWithSpecialCharacters(self): |
| 846 | + ml = QgsVectorLayer("Point?srid=EPSG:4326&field=123:int", "mem_with_nontext_fieldnames", "memory") |
| 847 | + self.assertEqual(ml.isValid(), True) |
| 848 | + QgsMapLayerRegistry.instance().addMapLayer(ml) |
| 849 | + |
| 850 | + ml.startEditing() |
| 851 | + self.assertTrue(ml.addAttribute(QgsField('abc:123', QVariant.String))) |
| 852 | + f1 = QgsFeature(ml.fields()) |
| 853 | + f1.setGeometry(QgsGeometry.fromWkt('POINT(0 0)')) |
| 854 | + f2 = QgsFeature(ml.fields()) |
| 855 | + f2.setGeometry(QgsGeometry.fromWkt('POINT(1 1)')) |
| 856 | + ml.addFeatures([f1, f2]) |
| 857 | + ml.commitChanges() |
| 858 | + |
| 859 | + vl = QgsVectorLayer("?query=select * from mem_with_nontext_fieldnames", "vl", "virtual") |
| 860 | + self.assertEqual(vl.isValid(), True) |
| 861 | + self.assertEqual(vl.fields().at(0).name(), '123') |
| 862 | + self.assertEqual(vl.fields().at(1).name(), 'abc:123') |
| 863 | + |
| 864 | + self.assertEqual(vl.featureCount(), 2) |
| 865 | + |
| 866 | + QgsMapLayerRegistry.instance().removeMapLayer(ml) |
| 867 | + |
844 | 868 |
|
845 | 869 | if __name__ == '__main__':
|
846 | 870 | unittest.main()
|
0 commit comments