import os from nose.tools import eq_ import mapnik from .utilities import execution_path, run_all def setup(): # All of the paths used are relative, if we run the tests # from another directory we need to chdir() os.chdir(execution_path('.')) def test_clearing_image_data(): im = mapnik.Image(256, 256) # make sure it equals itself bytes = im.tostring() eq_(im.tostring(), bytes) # set background, then clear im.fill(mapnik.Color('green')) eq_(im.tostring() != bytes, True) # clear image, should now equal original im.clear() eq_(im.tostring(), bytes) def make_map(): ds = mapnik.MemoryDatasource() context = mapnik.Context() context.push('Name') pixel_key = 1 f = mapnik.Feature(context, pixel_key) f['Name'] = str(pixel_key) f.geometry = mapnik.Geometry.from_wkt( 'POLYGON ((0 0, 0 256, 256 256, 256 0, 0 0))') ds.add_feature(f) s = mapnik.Style() r = mapnik.Rule() symb = mapnik.PolygonSymbolizer() r.symbols.append(symb) s.rules.append(r) lyr = mapnik.Layer('Places') lyr.datasource = ds lyr.styles.append('places_labels') width, height = 256, 256 m = mapnik.Map(width, height) m.append_style('places_labels', s) m.layers.append(lyr) m.zoom_all() return m if mapnik.has_grid_renderer(): def test_clearing_grid_data(): g = mapnik.Grid(256, 256) utf = g.encode() # make sure it equals itself eq_(g.encode(), utf) m = make_map() mapnik.render_layer(m, g, layer=0, fields=['__id__', 'Name']) eq_(g.encode() != utf, True) # clear grid, should now match original g.clear() eq_(g.encode(), utf) if __name__ == "__main__": setup() exit(run_all(eval(x) for x in dir() if x.startswith("test_")))