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 22:59 +0200

1"""Tests for the writer module""" 

2 

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 

9 

10 

11def test_shape_to_element(): 

12 p = gws.base.shape.from_xy(12.34567, 5.6789, crs=gws.lib.crs.WEBMERCATOR) 

13 

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 """) 

20 

21 

22def test_shape_to_element_crs_format(): 

23 p = gws.base.shape.from_xy(12.34567, 5.6789, crs=gws.lib.crs.WEBMERCATOR) 

24 

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 """) 

31 

32 

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 """) 

41 

42 

43def test_shape_to_element_xy(): 

44 p = gws.base.shape.from_xy(12.34567, 5.6789, crs=gws.lib.crs.WGS84) 

45 

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 """) 

52 

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 """) 

59 

60 

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 """) 

70 

71 

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 """) 

80 

81 

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 """)