fixup parameters conversion from python

This commit is contained in:
Dane Springmeyer 2013-01-04 11:28:00 -08:00
parent 866597c8c3
commit e0622be27d
2 changed files with 21 additions and 24 deletions

View file

@ -175,17 +175,7 @@ mapnik::value_holder get_param(mapnik::parameter const& p, int index)
}
}
boost::shared_ptr<mapnik::parameter> create_parameter_from_string(std::string const& key, std::string const& value)
{
return boost::make_shared<mapnik::parameter>(key,mapnik::value_holder(value));
}
boost::shared_ptr<mapnik::parameter> create_parameter_from_int(std::string const& key, mapnik::value_integer value)
{
return boost::make_shared<mapnik::parameter>(key,mapnik::value_holder(value));
}
boost::shared_ptr<mapnik::parameter> create_parameter_from_float(std::string const& key, double value)
boost::shared_ptr<mapnik::parameter> create_parameter(std::string const& key, mapnik::value_holder const& value)
{
return boost::make_shared<mapnik::parameter>(key,mapnik::value_holder(value));
}
@ -194,14 +184,13 @@ boost::shared_ptr<mapnik::parameter> create_parameter_from_float(std::string con
void export_parameters()
{
using namespace boost::python;
implicitly_convertible<std::string,mapnik::value_holder>();
implicitly_convertible<mapnik::value_null,mapnik::value_holder>();
implicitly_convertible<mapnik::value_integer,mapnik::value_holder>();
implicitly_convertible<mapnik::value_double,mapnik::value_holder>();
class_<parameter,boost::shared_ptr<parameter> >("Parameter",no_init)
.def("__init__", make_constructor(create_parameter_from_string),
"Create a mapnik.Parameter from a pair of values, the first being a string\n"
"and the second being either a string, and integer, or a float")
.def("__init__", make_constructor(create_parameter_from_float),
"Create a mapnik.Parameter from a pair of values, the first being a string\n"
"and the second being either a string, and integer, or a float")
.def("__init__", make_constructor(create_parameter_from_int),
.def("__init__", make_constructor(create_parameter),
"Create a mapnik.Parameter from a pair of values, the first being a string\n"
"and the second being either a string, and integer, or a float")
.def_pickle(parameter_pickle_suite())

View file

@ -11,22 +11,30 @@ import mapnik
def setup():
os.chdir(execution_path('.'))
def test_parameter():
def test_parameter_null():
p = mapnik.Parameter('key',None)
eq_(p[0],'key')
eq_(p[1],None)
def test_parameter_string():
p = mapnik.Parameter('key','value')
eq_(p[0],'key')
eq_(p[1],'value')
def test_parameter_integer():
p = mapnik.Parameter('int',sys.maxint)
eq_(p[0],'int')
eq_(p[1],sys.maxint)
p = mapnik.Parameter('float',float(sys.maxint))
eq_(p[0],'float')
def test_parameter_double():
p = mapnik.Parameter('double',float(sys.maxint))
eq_(p[0],'double')
eq_(p[1],float(sys.maxint))
p = mapnik.Parameter('bool_string','True')
eq_(p[0],'bool_string')
eq_(p[1],'True')
def test_parameter_boolean():
p = mapnik.Parameter('boolean',True)
eq_(p[0],'boolean')
eq_(p[1],True)
eq_(bool(p[1]),True)