File: text_placements_list.cpp

package info (click to toggle)
mapnik 4.2.0%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 18,548 kB
  • sloc: cpp: 163,861; python: 1,190; sh: 690; xml: 161; makefile: 123; perl: 28; lisp: 13
file content (64 lines) | stat: -rw-r--r-- 2,727 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#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\""));

    {
        mapnik::text_symbolizer_properties& properties = list.add();
        properties.format_defaults.text_size = 10.0;
        properties.set_format_tree(std::make_shared<mapnik::formatting::text_node>("\"Alternative text 1\""));
    }

    {
        mapnik::text_symbolizer_properties& properties = list.add();
        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());
}