Merge pull request #1331 from rjw57/rjw57-janitor

python bindings: export Query.resolution property as a tuple
This commit is contained in:
Artem Pavlenko 2012-07-20 04:44:03 -07:00
commit ffbbdff764
2 changed files with 51 additions and 0 deletions

View file

@ -30,6 +30,8 @@
using mapnik::query;
using mapnik::box2d;
namespace python = boost::python;
struct query_pickle_suite : boost::python::pickle_suite
{
static boost::python::tuple
@ -39,10 +41,26 @@ struct query_pickle_suite : boost::python::pickle_suite
}
};
struct resolution_to_tuple
{
static PyObject* convert(query::resolution_type const& x)
{
python::object tuple(python::make_tuple(x.get<0>(), x.get<1>()));
return python::incref(tuple.ptr());
}
static PyTypeObject const* get_pytype()
{
return &PyTuple_Type;
}
};
void export_query()
{
using namespace boost::python;
to_python_converter<query::resolution_type, resolution_to_tuple> ();
class_<query>("Query", "a spatial query data object",
init<box2d<double>,query::resolution_type const&,double>() )
.def(init<box2d<double> >())

View file

@ -0,0 +1,33 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, mapnik
from nose.tools import *
from utilities import execution_path
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_query_init():
bbox = (-180, -90, 180, 90)
query = mapnik.Query(mapnik.Box2d(*bbox))
r = query.resolution
assert_almost_equal(r[0], 1.0, places=7)
assert_almost_equal(r[1], 1.0, places=7)
# Converting *from* tuples *to* resolutions is not yet supported
@raises(TypeError)
def test_query_resolution():
bbox = (-180, -90, 180, 90)
init_res = (4.5, 6.7)
query = mapnik.Query(mapnik.Box2d(*bbox), init_res)
r = query.resolution
assert_almost_equal(r[0], init_res[0], places=7)
assert_almost_equal(r[1], init_res[1], places=7)
if __name__ == "__main__":
setup()
[eval(run)() for run in dir() if 'test_' in run]