File: params_test.cpp

package info (click to toggle)
mapnik 3.0.12%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 17,084 kB
  • ctags: 18,454
  • sloc: cpp: 142,516; python: 1,416; sh: 769; makefile: 170; xml: 140; lisp: 13
file content (114 lines) | stat: -rw-r--r-- 4,099 bytes parent folder | download | duplicates (4)
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
114

#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_;
};

}

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);
    }

}
}