📄 layertest.py
字号:
def testGetLayerOrder(self): """LayerTestCase.testGetLayerOrder: get layer drawing order""" order = self.map.getLayerOrder() assert order == tuple(range(7)), order def testSetLayerOrder(self): """LayerTestCase.testSetLayerOrder: set layer drawing order""" ord = (1, 0, 2, 3, 4, 5, 6) self.map.setLayerOrder(ord) order = self.map.getLayerOrder() assert order == ord, order# Layer removal testsclass RemoveLayerTestCase(MapTestCase): def testRemoveLayer1NumLayers(self): """removing the first layer by index from the mapfile leaves three""" self.map.removeLayer(0) assert self.map.numlayers == 6 def testRemoveLayer1LayerName(self): """removing first layer reverts it to the second layer's name""" l2name = self.map.getLayer(1).name self.map.removeLayer(0) assert self.map.getLayer(0).name == l2name def testRemoveLayer2NumLayers(self): """removing second layer by index from mapfile leaves three layers""" self.map.removeLayer(1) assert self.map.numlayers == 6 def testRemoveLayer2LayerName(self): """removing of the second layer reverts it to the first layer's name""" l1name = self.map.getLayer(0).name self.map.removeLayer(1) assert self.map.getLayer(0).name == l1nameclass ExpressionTestCase(MapLayerTestCase): def testClearExpression(self): """layer expression can be properly cleared""" self.layer.setFilter('') fs = self.layer.getFilterString() assert fs == '"(null)"', fs def testSetStringExpression(self): """layer expression can be set to string""" self.layer.setFilter('foo') fs = self.layer.getFilterString() assert fs == '"foo"', fs def testSetQuotedStringExpression(self): """layer expression string can be quoted""" self.layer.setFilter('"foo"') fs = self.layer.getFilterString() assert fs == '"foo"', fs def testSetRegularExpression(self): """layer expression can be regular expression""" self.layer.setFilter('/foo/') fs = self.layer.getFilterString() assert fs == '/foo/', fs def testSetLogicalExpression(self): """layer expression can be logical expression""" self.layer.setFilter('([foo] >= 2)') fs = self.layer.getFilterString() assert fs == '([foo] >= 2)', fs class LayerQueryTestCase(MapLayerTestCase): def setUp(self): MapLayerTestCase.setUp(self) self.layer = self.map.getLayerByName('POINT') self.layer.template = 'foo'class SpatialLayerQueryTestCase(LayerQueryTestCase): def testRectQuery(self): qrect = mapscript.rectObj(-10.0, 45.0, 10.0, 55.0) self.layer.queryByRect(self.map, qrect) assert self.layer.getNumResults() == 1 def testShapeQuery(self): qrect = mapscript.rectObj(-10.0, 45.0, 10.0, 55.0) qshape = qrect.toPolygon() self.layer.queryByShape(self.map, qshape) assert self.layer.getNumResults() == 1 def testPointQuery(self): qpoint = mapscript.pointObj(0.0, 51.5) self.layer.queryByPoint(self.map, qpoint, mapscript.MS_MULTIPLE, 2.0) assert self.layer.getNumResults() == 1 def testRectQueryNoResults(self): qrect = mapscript.rectObj(-101.0, 0.0, -100.0, 1.0) self.layer.queryByRect(self.map, qrect) assert self.layer.getNumResults() == 0 def testShapeQueryNoResults(self): qrect = mapscript.rectObj(-101.0, 0.0, -100.0, 1.0) qshape = qrect.toPolygon() self.layer.queryByShape(self.map, qshape) assert self.layer.getNumResults() == 0 def testPointQueryNoResults(self): qpoint = mapscript.pointObj(-100.0, 51.5) self.layer.queryByPoint(self.map, qpoint, mapscript.MS_MULTIPLE, 2.0) assert self.layer.getNumResults() == 0 class AttributeLayerQueryTestCase(LayerQueryTestCase): def testAttributeQuery(self): self.layer.queryByAttributes(self.map, "FNAME", '"A Point"', mapscript.MS_MULTIPLE) assert self.layer.getNumResults() == 1 def testLogicalAttributeQuery(self): self.layer.queryByAttributes(self.map, None, '("[FNAME]" == "A Point")', mapscript.MS_MULTIPLE) assert self.layer.getNumResults() == 1 def testAttributeQueryNoResults(self): self.layer.queryByAttributes(self.map, "FNAME", '"Bogus Point"', mapscript.MS_MULTIPLE) assert self.layer.getNumResults() == 0class LayerVisibilityTestCase(MapLayerTestCase): def setUp(self): MapLayerTestCase.setUp(self) self.layer.minscale = 1000 self.layer.maxscale = 2000 self.layer.status = mapscript.MS_ON self.map.zoomScale(1500, mapscript.pointObj(100,100), 200, 200, self.map.extent, None) def testInitialVisibility(self): """expect visibility""" assert self.layer.isVisible() == mapscript.MS_TRUE def testStatusOffVisibility(self): """expect false visibility after switching status off""" self.layer.status = mapscript.MS_OFF assert self.layer.isVisible() == mapscript.MS_FALSE def testZoomOutVisibility(self): """expect false visibility after zooming out beyond maximum""" self.map.zoomScale(2500, mapscript.pointObj(100,100), 200, 200, self.map.extent, None) assert self.layer.isVisible() == mapscript.MS_FALSE from random import randomclass InlineLayerTestCase(unittest.TestCase): def setUp(self): # Inline feature layer self.ilayer = mapscript.layerObj() self.ilayer.type = mapscript.MS_LAYER_POLYGON self.ilayer.status = mapscript.MS_DEFAULT self.ilayer.connectiontype = mapscript.MS_INLINE cs = 'f7fcfd,e5f5f9,ccece6,99d8c9,66c2a4,41ae76,238b45,006d2c,00441b' colors = ['#' + h for h in cs.split(',')] #print colors for i in range(9): # Make a class for feature ci = self.ilayer.insertClass(mapscript.classObj()) co = self.ilayer.getClass(ci) si = co.insertStyle(mapscript.styleObj()) so = co.getStyle(si) so.color.setHex(colors[i]) co.label.color.setHex('#000000') co.label.outlinecolor.setHex('#FFFFFF') co.label.type = mapscript.MS_BITMAP co.label.size = mapscript.MS_SMALL # The shape to add is randomly generated xc = 4.0*(random() - 0.5) yc = 4.0*(random() - 0.5) r = mapscript.rectObj(xc-0.25, yc-0.25, xc+0.25, yc+0.25) s = r.toPolygon() # Classify s.classindex = i s.text = "F%d" % (i) # Add to inline feature layer self.ilayer.addFeature(s) def testExternalClassification(self): mo = mapscript.mapObj() mo.setSize(400, 400) mo.setExtent(-2.5, -2.5, 2.5, 2.5) mo.selectOutputFormat('image/png') mo.insertLayer(self.ilayer) im = mo.draw() im.save('testExternalClassification.png')# ===========================================================================# Run the tests outside of the main suiteif __name__ == '__main__': unittest.main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -