Coverage for gws-app/gws/lib/gml/_test/writer_test.py: 100%
38 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 23:09 +0200
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-16 23:09 +0200
1"""Tests for the writer module"""
3import gws
4import gws.base.shape
5import gws.lib.crs
6import gws.lib.gml.writer as writer
7import gws.lib.xmlx
8import gws.test.util as u
11def test_shape_to_element():
12 p = gws.base.shape.from_xy(12.34567, 5.6789, crs=gws.lib.crs.WEBMERCATOR)
14 xml = writer.shape_to_element(p).to_string()
15 assert u.fxml(xml) == u.fxml("""
16 <gml:Point srsName="urn:ogc:def:crs:EPSG::3857">
17 <gml:pos srsDimension="2">12.35 5.68</gml:pos>
18 </gml:Point>
19 """)
22def test_shape_to_element_crs_format():
23 p = gws.base.shape.from_xy(12.34567, 5.6789, crs=gws.lib.crs.WEBMERCATOR)
25 xml = writer.shape_to_element(p, crs_format=gws.CrsFormat.epsg).to_string()
26 assert u.fxml(xml) == u.fxml("""
27 <gml:Point srsName="EPSG:3857">
28 <gml:pos srsDimension="2">12.35 5.68</gml:pos>
29 </gml:Point>
30 """)
33def test_shape_to_element_coordinate_precision():
34 p = gws.base.shape.from_xy(12.34567, 5.6789, crs=gws.lib.crs.WEBMERCATOR)
35 xml = writer.shape_to_element(p, coordinate_precision=4).to_string()
36 assert u.fxml(xml) == u.fxml("""
37 <gml:Point srsName="urn:ogc:def:crs:EPSG::3857">
38 <gml:pos srsDimension="2">12.3457 5.6789</gml:pos>
39 </gml:Point>
40 """)
43def test_shape_to_element_xy():
44 p = gws.base.shape.from_xy(12.34567, 5.6789, crs=gws.lib.crs.WGS84)
46 xml = writer.shape_to_element(p, always_xy=True).to_string()
47 assert u.fxml(xml) == u.fxml("""
48 <gml:Point srsName="urn:ogc:def:crs:EPSG::4326">
49 <gml:pos srsDimension="2">12.34567 5.6789</gml:pos>
50 </gml:Point>
51 """)
53 xml = writer.shape_to_element(p, always_xy=False).to_string()
54 assert u.fxml(xml) == u.fxml("""
55 <gml:Point srsName="urn:ogc:def:crs:EPSG::4326">
56 <gml:pos srsDimension="2">5.6789 12.34567</gml:pos>
57 </gml:Point>
58 """)
61def test_shape_to_element_namespace():
62 p = gws.base.shape.from_xy(12.34567, 5.6789, crs=gws.lib.crs.WEBMERCATOR)
63 ns = gws.lib.xmlx.namespace.get('wms')
64 xml = writer.shape_to_element(p, namespace=ns).to_string()
65 assert u.fxml(xml) == u.fxml("""
66 <wms:Point srsName="urn:ogc:def:crs:EPSG::3857">
67 <wms:pos srsDimension="2">12.35 5.68</wms:pos>
68 </wms:Point>
69 """)
72def test_shape_to_element_with_xmlns():
73 p = gws.base.shape.from_xy(12.34567, 5.6789, crs=gws.lib.crs.WEBMERCATOR)
74 xml = writer.shape_to_element(p, with_xmlns=False).to_string()
75 assert u.fxml(xml) == u.fxml("""
76 <Point srsName="urn:ogc:def:crs:EPSG::3857">
77 <pos srsDimension="2">12.35 5.68</pos>
78 </Point>
79 """)
82def test_shape_to_element_with_inline_xmlns():
83 p = gws.base.shape.from_xy(12.34567, 5.6789, crs=gws.lib.crs.WEBMERCATOR)
84 opts = gws.XmlOptions(withNamespaceDeclarations=True)
85 xml = writer.shape_to_element(p, with_inline_xmlns=True).to_string(opts)
86 assert u.fxml(xml) == u.fxml("""
87 <gml:Point srsName="urn:ogc:def:crs:EPSG::3857" xmlns:gml="http://www.opengis.net/gml/3.2">
88 <gml:pos srsDimension="2" xmlns:gml="http://www.opengis.net/gml/3.2">12.35 5.68</gml:pos>
89 </gml:Point>
90 """)