2018-10-20 23:09:08 +02:00
|
|
|
#include "catch.hpp"
|
|
|
|
#include <mapnik/text/placements/list.hpp>
|
|
|
|
#include <mapnik/text/formatting/text.hpp>
|
|
|
|
#include <mapnik/feature.hpp>
|
|
|
|
|
|
|
|
TEST_CASE("text_placements_list")
|
|
|
|
{
|
|
|
|
mapnik::text_placements_list list;
|
|
|
|
|
|
|
|
list.defaults.format_defaults.text_size = 12.0;
|
|
|
|
list.defaults.set_format_tree(std::make_shared<mapnik::formatting::text_node>("\"Default text\""));
|
|
|
|
|
|
|
|
{
|
2022-01-26 23:25:53 +01:00
|
|
|
mapnik::text_symbolizer_properties& properties = list.add();
|
2018-10-20 23:09:08 +02:00
|
|
|
properties.format_defaults.text_size = 10.0;
|
|
|
|
properties.set_format_tree(std::make_shared<mapnik::formatting::text_node>("\"Alternative text 1\""));
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
2022-01-26 23:25:53 +01:00
|
|
|
mapnik::text_symbolizer_properties& properties = list.add();
|
2018-10-20 23:09:08 +02:00
|
|
|
properties.format_defaults.text_size = 8.0;
|
|
|
|
properties.set_format_tree(std::make_shared<mapnik::formatting::text_node>("\"Alternative text 2\""));
|
|
|
|
}
|
|
|
|
|
|
|
|
mapnik::context_ptr context(std::make_shared<mapnik::context_type>());
|
|
|
|
mapnik::feature_impl feature(context, 1);
|
|
|
|
mapnik::attributes vars;
|
|
|
|
mapnik::text_placement_info_ptr info = list.get_placement_info(1.0, feature, vars);
|
|
|
|
|
|
|
|
{
|
|
|
|
REQUIRE(info->next());
|
|
|
|
CHECK(info->properties.format_defaults.text_size.get<mapnik::value_double>() == Approx(12.0));
|
|
|
|
REQUIRE(info->properties.format_tree());
|
|
|
|
mapnik::expression_set expressions;
|
|
|
|
info->properties.format_tree()->add_expressions(expressions);
|
|
|
|
REQUIRE(!expressions.empty());
|
|
|
|
mapnik::expr_node const& expression = **expressions.begin();
|
|
|
|
CHECK(expression.get<mapnik::value_unicode_string>() == mapnik::value_unicode_string("Default text"));
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
REQUIRE(info->next());
|
|
|
|
CHECK(info->properties.format_defaults.text_size.get<mapnik::value_double>() == Approx(10.0));
|
|
|
|
REQUIRE(info->properties.format_tree());
|
|
|
|
mapnik::expression_set expressions;
|
|
|
|
info->properties.format_tree()->add_expressions(expressions);
|
|
|
|
REQUIRE(!expressions.empty());
|
|
|
|
mapnik::expr_node const& expression = **expressions.begin();
|
|
|
|
CHECK(expression.get<mapnik::value_unicode_string>() == mapnik::value_unicode_string("Alternative text 1"));
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
REQUIRE(info->next());
|
|
|
|
CHECK(info->properties.format_defaults.text_size.get<mapnik::value_double>() == Approx(8.0));
|
|
|
|
REQUIRE(info->properties.format_tree());
|
|
|
|
mapnik::expression_set expressions;
|
|
|
|
info->properties.format_tree()->add_expressions(expressions);
|
|
|
|
REQUIRE(!expressions.empty());
|
|
|
|
mapnik::expr_node const& expression = **expressions.begin();
|
|
|
|
CHECK(expression.get<mapnik::value_unicode_string>() == mapnik::value_unicode_string("Alternative text 2"));
|
|
|
|
}
|
|
|
|
|
|
|
|
CHECK(!info->next());
|
|
|
|
}
|