diff --git a/tests/data/shp/3d_point_empty.dbf b/tests/data/shp/3d_point_empty.dbf new file mode 100644 index 000000000..45d754f7b Binary files /dev/null and b/tests/data/shp/3d_point_empty.dbf differ diff --git a/tests/data/shp/3d_point_empty.prj b/tests/data/shp/3d_point_empty.prj new file mode 100644 index 000000000..6e3eaed5b --- /dev/null +++ b/tests/data/shp/3d_point_empty.prj @@ -0,0 +1 @@ +PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.017453292519943295]],PROJECTION["Mercator_Auxiliary_Sphere"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0]] \ No newline at end of file diff --git a/tests/data/shp/3d_point_empty.shp b/tests/data/shp/3d_point_empty.shp new file mode 100644 index 000000000..92815c2ec Binary files /dev/null and b/tests/data/shp/3d_point_empty.shp differ diff --git a/tests/data/shp/3d_point_empty.shx b/tests/data/shp/3d_point_empty.shx new file mode 100644 index 000000000..92815c2ec Binary files /dev/null and b/tests/data/shp/3d_point_empty.shx differ diff --git a/tests/python_tests/shapeindex_test.py b/tests/python_tests/shapeindex_test.py new file mode 100644 index 000000000..4de19a593 --- /dev/null +++ b/tests/python_tests/shapeindex_test.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python + +from nose.tools import eq_ +from utilities import execution_path, run_all +from subprocess import Popen, PIPE +import shutil +import os +import fnmatch +import mapnik + +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_shapeindex(): + # first copy shapefiles to tmp directory + source_dir = '../data/shp/' + working_dir = '/tmp/mapnik-shp-tmp/' + if os.path.exists(working_dir): + shutil.rmtree(working_dir) + shutil.copytree(source_dir,working_dir) + matches = [] + for root, dirnames, filenames in os.walk('%s' % source_dir): + for filename in fnmatch.filter(filenames, '*.shp'): + matches.append(os.path.join(root, filename)) + for shp in matches: + source_file = os.path.join(source_dir,os.path.relpath(shp,source_dir)) + dest_file = os.path.join(working_dir,os.path.relpath(shp,source_dir)) + ds = mapnik.Shapefile(file=source_file) + count = 0; + fs = ds.featureset() + try: + while (fs.next()): + count = count+1 + except StopIteration: + pass + stdin, stderr = Popen('shapeindex %s' % dest_file, shell=True, stdout=PIPE, stderr=PIPE).communicate() + ds2 = mapnik.Shapefile(file=dest_file) + count2 = 0; + fs = ds.featureset() + try: + while (fs.next()): + count2 = count2+1 + except StopIteration: + pass + eq_(count,count2) + +if __name__ == "__main__": + setup() + exit(run_all(eval(x) for x in dir() if x.startswith("test_")))