Coverage for gws-app/gws/gis/source/_test.py: 0%

152 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-17 01:37 +0200

1"""Tests for the source module""" 

2 

3import gws 

4import gws.test.util as u 

5import gws.gis.source as source 

6 

7import gws.gis.crs as crs 

8 

9 

10def test_layer_matches(): 

11 lf = source.LayerFilter(level=1, 

12 names=['n1', 'n2', 'n3'], 

13 titles=['t1', 't2', 't3'], 

14 pattern='test', 

15 isGroup=True, 

16 isImage=True, 

17 isQueryable=True, 

18 isVisible=True) 

19 

20 sl = gws.SourceLayer(aLevel=1, 

21 name='n1', 

22 title='t1', 

23 aPath='/home/test/sl1', 

24 isGroup=True, 

25 isImage=True, 

26 isQueryable=True, 

27 isVisible=True) 

28 assert source.layer_matches(sl, lf) 

29 sl.aLevel = 2 

30 assert not source.layer_matches(sl, lf) 

31 sl.aLevel = 1 

32 sl.name = 'n2' 

33 assert source.layer_matches(sl, lf) 

34 sl.name = 'n1' 

35 sl.title = 't4' 

36 assert not source.layer_matches(sl, lf) 

37 sl.title = 't1' 

38 sl.apath = '/foo/bar' 

39 lf.pattern = 'something' 

40 assert not source.layer_matches(sl, lf) 

41 lf.pattern = 'test' 

42 sl.aPath = '/home/test/sl1' 

43 sl.isGroup = False 

44 assert not source.layer_matches(sl, lf) 

45 sl.isGroup = True 

46 sl.isImage = False 

47 assert not source.layer_matches(sl, lf) 

48 sl.isImage = True 

49 sl.isVisible = False 

50 assert not source.layer_matches(sl, lf) 

51 sl.isVisible = True 

52 sl.isQueryable = False 

53 assert not source.layer_matches(sl, lf) 

54 sl.isQueryable = True 

55 lf = source.LayerFilter() 

56 assert source.layer_matches(sl, lf) 

57 

58 

59def test_check_layers(): 

60 sl1 = gws.SourceLayer(name='n1') 

61 sl2 = gws.SourceLayer(metadata=gws.Metadata(title='t2')) 

62 sl3 = gws.SourceLayer(name='n3') 

63 sl4 = gws.SourceLayer(metadata=gws.Metadata(title='t4')) 

64 sl5 = gws.SourceLayer(name='n5') 

65 sl6 = gws.SourceLayer(metadata=gws.Metadata(title='t6')) 

66 

67 layers1 = [sl1, sl2] 

68 layers2 = [sl3, sl4] 

69 layers3 = [sl5, sl6] 

70 

71 sl1.layers = layers2 

72 sl3.layers = layers3 

73 

74 test = source.check_layers(layers1) 

75 

76 assert test[0].get('name') == 'n1' 

77 assert test[0].get('layers')[0].get('name') == 'n3' 

78 assert test[0].get('layers')[0].get('layers')[0].get('name') == 'n5' 

79 assert test[0].get('layers')[0].get('layers')[0].get('aUid') == 'n5' 

80 assert test[0].get('layers')[0].get('layers')[0].get('aPath') == '/n1/n3/n5' 

81 assert test[0].get('layers')[0].get('layers')[0].get('aLevel') == 3 

82 assert not test[0].get('layers')[0].get('layers')[0].get('layers') 

83 

84 assert test[0].get('layers')[0].get('layers')[1].get('metadata').get('title') == 't6' 

85 assert test[0].get('layers')[0].get('layers')[1].get('aUid') == 't6' 

86 assert test[0].get('layers')[0].get('layers')[1].get('aPath') == '/n1/n3/t6' 

87 assert test[0].get('layers')[0].get('layers')[1].get('aLevel') == 3 

88 assert test[0].get('layers')[0].get('layers')[1].get('layers') == [] 

89 

90 assert test[0].get('layers')[0].get('aUid') == 'n3' 

91 assert test[0].get('layers')[0].get('aPath') == '/n1/n3' 

92 assert test[0].get('layers')[0].get('aLevel') == 2 

93 

94 assert test[0].get('layers')[1].get('metadata').get('title') == 't4' 

95 assert test[0].get('layers')[1].get('aPath') == '/n1/t4' 

96 assert test[0].get('layers')[1].get('aLevel') == 2 

97 assert test[0].get('layers')[1].get('layers') == [] 

98 

99 assert test[0].get('aUid') == 'n1' 

100 assert test[0].get('aPath') == '/n1' 

101 assert test[0].get('aLevel') == 1 

102 

103 assert test[1].get('metadata').get('title') == 't2' 

104 assert test[1].get('aPath') == '/t2' 

105 assert test[1].get('aLevel') == 1 

106 assert test[1].get('aUid') == 't2' 

107 assert test[1].get('layers') == [] 

108 

109 

110def test_check_layers_revert(): 

111 sl1 = gws.SourceLayer(name='n1') 

112 sl2 = gws.SourceLayer(metadata=gws.Metadata(title='t2')) 

113 sl3 = gws.SourceLayer(name='n3') 

114 sl4 = gws.SourceLayer(metadata=gws.Metadata(title='t4')) 

115 sl5 = gws.SourceLayer(name='n5') 

116 sl6 = gws.SourceLayer(metadata=gws.Metadata(title='t6')) 

117 

118 layers1 = [sl1, sl2] 

119 layers2 = [sl3, sl4] 

120 layers3 = [sl5, sl6] 

121 

122 sl1.layers = layers2 

123 sl3.layers = layers3 

124 

125 test = source.check_layers(layers1, revert=True) 

126 

127 assert test[0].get('metadata').get('title') == 't2' 

128 assert test[0].get('aUid') == 't2' 

129 assert test[0].get('aPath') == '/t2' 

130 assert test[0].get('aLevel') == 1 

131 assert test[0].get('layers') == [] 

132 

133 assert test[1].get('layers')[0].get('metadata').get('title') == 't4' 

134 assert test[1].get('layers')[0].get('aUid') == 't4' 

135 assert test[1].get('layers')[0].get('aPath') == '/n1/t4' 

136 assert test[1].get('layers')[0].get('aLevel') == 2 

137 assert test[1].get('layers')[0].get('layers') == [] 

138 

139 assert test[1].get('layers')[1].get('name') == 'n3' 

140 assert test[1].get('layers')[1].get('layers')[0].get('metadata').get('title') == 't6' 

141 assert test[1].get('layers')[1].get('layers')[0].get('aUid') == 't6' 

142 assert test[1].get('layers')[1].get('layers')[0].get('aPath') == '/n1/n3/t6' 

143 assert test[1].get('layers')[1].get('layers')[0].get('aLevel') == 3 

144 assert test[1].get('layers')[1].get('layers')[0].get('layers') == [] 

145 

146 assert test[1].get('layers')[1].get('layers')[1].get('name') == 'n5' 

147 assert test[1].get('layers')[1].get('layers')[1].get('aUid') == 'n5' 

148 assert test[1].get('layers')[1].get('layers')[1].get('aPath') == '/n1/n3/n5' 

149 assert test[1].get('layers')[1].get('layers')[1].get('aLevel') == 3 

150 assert test[1].get('layers')[1].get('layers')[1].get('layers') == [] 

151 

152 assert test[1].get('layers')[1].get('aPath') == '/n1/n3' 

153 assert test[1].get('layers')[1].get('aLevel') == 2 

154 assert test[1].get('aUid') == 'n1' 

155 assert test[1].get('aPath') == '/n1' 

156 assert test[1].get('aLevel') == 1 

157 

158 

159def test_filter_layers(): 

160 lf = source.LayerFilter(names=['n2', 'n4'], 

161 isGroup=True, 

162 isImage=True, 

163 isQueryable=True, 

164 isVisible=True) 

165 

166 sl1 = gws.SourceLayer(aLevel=1, 

167 name='n1', 

168 isGroup=True, 

169 isImage=True, 

170 isQueryable=True, 

171 isVisible=True) 

172 

173 sl2 = gws.SourceLayer(aLevel=1, 

174 name='n2', 

175 isGroup=True, 

176 isImage=True, 

177 isQueryable=True, 

178 isVisible=True) 

179 

180 sl3 = gws.SourceLayer(aLevel=2, 

181 name='n3', 

182 isGroup=True, 

183 isImage=True, 

184 isQueryable=True, 

185 isVisible=True) 

186 

187 sl4 = gws.SourceLayer(aLevel=2, 

188 name='n4', 

189 isGroup=True, 

190 isImage=True, 

191 isQueryable=True, 

192 isVisible=True) 

193 

194 layers1 = [sl1, sl2] 

195 layers2 = [sl3, sl4] 

196 

197 sl1.layers = layers2 

198 

199 layers1 = source.check_layers(layers1) 

200 

201 test = source.filter_layers(layers1, lf) 

202 

203 assert test[0].get('aLevel') == 1 

204 assert test[0].get('name') == 'n2' 

205 assert test[0].get('isGroup') 

206 assert test[0].get('isImage') 

207 assert test[0].get('isQueryable') 

208 assert test[0].get('isVisible') 

209 assert test[0].get('aUid') == 'n2' 

210 assert test[0].get('aPath') == '/n2' 

211 assert not test[0].get('layers') 

212 

213 assert test[1].get('aLevel') == 2 

214 assert test[1].get('name') == 'n4' 

215 assert test[1].get('isGroup') 

216 assert test[1].get('isImage') 

217 assert test[1].get('isQueryable') 

218 assert test[1].get('isVisible') 

219 assert test[1].get('aUid') == 'n4' 

220 assert test[1].get('aPath') == '/n1/n4' 

221 assert not test[1].get('layers') 

222 

223 

224def test_combined_crs_list(): 

225 sl1 = gws.SourceLayer(supportedCrs=[]) 

226 sl2 = gws.SourceLayer(supportedCrs=[crs.WGS84]) 

227 sl3 = gws.SourceLayer(supportedCrs=[crs.WGS84, crs.WEBMERCATOR]) 

228 sl4 = gws.SourceLayer(supportedCrs=[crs.WGS84]) 

229 sl5 = gws.SourceLayer(supportedCrs=[]) 

230 sl6 = gws.SourceLayer(supportedCrs=[crs.WGS84, crs.WEBMERCATOR]) 

231 assert source.combined_crs_list([sl1, sl2, sl3, sl4, sl5, sl6]) == [crs.WGS84]