File: params_test.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 (113 lines) | stat: -rw-r--r-- 4,356 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include "catch.hpp"

#include <iostream>
#include <mapnik/value/types.hpp>
#include <mapnik/params.hpp>
#include <mapnik/boolean.hpp>

#include <ostream>

namespace detail {

class string_holder
{
  public:
    string_holder()
        : member_("member")
    {}
    std::string const& get_string() const { return member_; }

  private:
    std::string member_;
};

} // namespace detail

TEST_CASE("parameters")
{
    SECTION("get/set")
    {
        try
        {
            mapnik::parameters params;

            // true
            params["bool"] = mapnik::value_integer(true);
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == true));

            params["bool"] = "true";
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == true));

            params["bool"] = mapnik::value_integer(1);
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == true));

            params["bool"] = "1";
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == true));

            params["bool"] = "True";
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == true));

            params["bool"] = "on";
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == true));

            params["bool"] = "yes";
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == true));

            // false
            params["bool"] = mapnik::value_integer(false);
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == false));

            params["bool"] = "false";
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == false));

            params["bool"] = mapnik::value_integer(0);
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == false));

            params["bool"] = "0";
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == false));

            params["bool"] = "False";
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == false));

            params["bool"] = "off";
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == false));

            params["bool"] = "no";
            REQUIRE((params.get<mapnik::boolean_type>("bool") && *params.get<mapnik::boolean_type>("bool") == false));

            // strings
            params["string"] = "hello";
            REQUIRE((params.get<std::string>("string") && *params.get<std::string>("string") == "hello"));

            // int
            params["int"] = mapnik::value_integer(1);
            REQUIRE((params.get<mapnik::value_integer>("int") && *params.get<mapnik::value_integer>("int") == 1));

            // double
            params["double"] = 1.5;
            REQUIRE((params.get<double>("double") && *params.get<double>("double") == 1.5));
            // value_null
            params["null"] = mapnik::value_null();
            // https://github.com/mapnik/mapnik/issues/2471
            // REQUIRE( (params.get<mapnik::value_null>("null") && *params.get<mapnik::value_null>("null") ==
            // mapnik::value_null()) );

            std::string value("value");
            params["value"] = value;
            REQUIRE((params.get<std::string>("value") == std::string("value")));
            REQUIRE(value == std::string("value"));

            // ensure that const member is not moved incorrectly when added to params
            detail::string_holder holder;
            std::string const& holder_member = holder.get_string();
            params["member"] = holder_member;
            REQUIRE((params.get<std::string>("member") == std::string("member")));
            REQUIRE((holder_member == std::string("member")));
        }
        catch (std::exception const& ex)
        {
            std::cerr << ex.what() << "\n";
            REQUIRE(false);
        }
    }
}