def test_property(self): """ Test that QgsProperty values are correctly loaded and written """ doc = QDomDocument("properties") prop = QgsProperty.fromValue(1001) elem = QgsXmlUtils.writeVariant(prop, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(prop, prop2) prop = QgsProperty.fromExpression('1+2=5') elem = QgsXmlUtils.writeVariant(prop, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(prop, prop2) prop = QgsProperty.fromField('oid') elem = QgsXmlUtils.writeVariant(prop, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(prop, prop2)
def test_crs(self): """ Test that QgsCoordinateReferenceSystem values are correctly loaded and written """ doc = QDomDocument("properties") crs = QgsCoordinateReferenceSystem('epsg:3111') elem = QgsXmlUtils.writeVariant(crs, doc) crs2 = QgsXmlUtils.readVariant(elem) self.assertTrue(crs2.isValid()) self.assertEqual(crs2.authid(), 'EPSG:3111') crs = QgsCoordinateReferenceSystem() elem = QgsXmlUtils.writeVariant(crs, doc) crs2 = QgsXmlUtils.readVariant(elem) self.assertFalse(crs2.isValid())
def test_invalid(self): """ Test that invalid attributes are correctly loaded and written """ doc = QDomDocument("properties") elem = QgsXmlUtils.writeVariant(None, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertIsNone(prop2)
def test_geom(self): """ Test that QgsGeometry values are correctly loaded and written """ doc = QDomDocument("properties") g = QgsGeometry.fromWkt('Point(3 4)') elem = QgsXmlUtils.writeVariant(g, doc) g2 = QgsXmlUtils.readVariant(elem) self.assertEqual(g2.asWkt(), 'Point (3 4)')
def test_integer(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'a': 1, 'b': 2, 'c': 3, 'd': -1} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_list(self): """ Test that lists are correctly loaded and written """ doc = QDomDocument("properties") my_properties = [1, 4, 'a', 'test', 7.9] elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_double(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'a': 0.27, 'b': 1.0, 'c': 5} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_long(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") # not sure if this actually does map to a long? my_properties = {'a': 9223372036854775808} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_boolean(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'a': True, 'b': False} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_complex(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'boolean': True, 'integer': False, 'map': {'a': 1}} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEquals(my_properties, prop2)
def test_string(self): """ Test that maps are correctly loaded and written """ doc = QDomDocument("properties") my_properties = {'a': 'a', 'b': 'b', 'c': 'something_else', 'empty': ''} elem = QgsXmlUtils.writeVariant(my_properties, doc) prop2 = QgsXmlUtils.readVariant(elem) self.assertEqual(my_properties, prop2)
def test_output_layer_definition(self): """ Test that QgsProcessingOutputLayerDefinition values are correctly loaded and written """ doc = QDomDocument("properties") definition = QgsProcessingOutputLayerDefinition(QgsProperty.fromValue('my sink')) definition.createOptions = {'opt': 1, 'opt2': 2} elem = QgsXmlUtils.writeVariant(definition, doc) c = QgsXmlUtils.readVariant(elem) self.assertEqual(c.sink.staticValue(), 'my sink') self.assertEqual(c.createOptions, {'opt': 1, 'opt2': 2})
def write_project(self, doc): """ Writes out the project model definitions into the project DOM document :param doc: DOM document """ qgis_nodes = doc.elementsByTagName('qgis') if not qgis_nodes: return qgis_node = qgis_nodes.at(0) project_models_node = doc.createElement('projectModels') for a in self.algorithms(): definition = a.toVariant() element = QgsXmlUtils.writeVariant(definition, doc) project_models_node.appendChild(element) qgis_node.appendChild(project_models_node)
def write_xml(self, document: QDomDocument): """ Writes the plot settings to an XML element """ element = QgsXmlUtils.writeVariant( { 'plot_type': self.plot_type, 'plot_properties': self.properties, 'plot_layout': self.layout, 'source_layer_id': self.source_layer_id, 'dynamic_properties': self.data_defined_properties.toVariant( PlotSettings.DYNAMIC_PROPERTIES) }, document) return element
def test_feature_source_definition(self): """ Test that QgsProcessingFeatureSourceDefinition values are correctly loaded and written """ doc = QDomDocument("properties") definition = QgsProcessingFeatureSourceDefinition(QgsProperty.fromValue('my source')) definition.selectedFeaturesOnly = True definition.featureLimit = 27 definition.flags = QgsProcessingFeatureSourceDefinition.FlagCreateIndividualOutputPerInputFeature definition.geometryCheck = QgsFeatureRequest.GeometrySkipInvalid elem = QgsXmlUtils.writeVariant(definition, doc) c = QgsXmlUtils.readVariant(elem) self.assertEqual(c.source.staticValue(), 'my source') self.assertTrue(c.selectedFeaturesOnly) self.assertEqual(c.featureLimit, 27) self.assertEqual(c.flags, QgsProcessingFeatureSourceDefinition.FlagCreateIndividualOutputPerInputFeature) self.assertEqual(c.geometryCheck, QgsFeatureRequest.GeometrySkipInvalid)