File: copy_move_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 (79 lines) | stat: -rw-r--r-- 2,247 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

#include <mapnik/layer.hpp>
#include <mapnik/map.hpp>
#include <mapnik/color.hpp>
#include <mapnik/datasource.hpp>
#include <mapnik/datasource_cache.hpp>
#include <mapnik/util/fs.hpp>

#include "catch.hpp"


TEST_CASE("copy") {

SECTION("layers") {

    try
    {
        mapnik::Map m0(100,100);
        mapnik::Map m2(200,100);
        std::string shape_plugin("./plugins/input/shape.input");
        if (mapnik::util::exists(shape_plugin))
        {
            mapnik::parameters p;
            p["type"]="shape";
            p["file"]="demo/data/boundaries";
            p["encoding"]="latin1";
            auto ds0 = mapnik::datasource_cache::instance().create(p);

            auto ds1 = ds0; // shared ptr copy
            REQUIRE( (ds1 == ds0) );
            REQUIRE( !(*ds1 != *ds0) );
            REQUIRE( (ds1.get() == ds0.get()) );
            ds1 = mapnik::datasource_cache::instance().create(p); // new with the same parameters
            REQUIRE( (ds1 != ds0) );
            REQUIRE( (*ds1 == *ds0) );
            auto ds2 = std::move(ds1);
            REQUIRE( (ds2 != ds0) );
            REQUIRE( (*ds2 == *ds0) );

            // mapnik::layer
            mapnik::layer l0("test-layer");
            l0.set_datasource(ds0);

            mapnik::layer l1 = l0; // copy assignment
            REQUIRE( (l1 == l0) );
            mapnik::layer l2(l0); // copy ctor
            REQUIRE( (l2 == l0) );
            mapnik::layer l3(mapnik::layer("test-layer")); // move ctor
            l3.set_datasource(ds2);

            REQUIRE( (l3 == l0) );
            mapnik::layer l4 = std::move(l3);
            REQUIRE( (l4 == l0) ); // move assignment

            m0.add_layer(l4);
            m0.set_background(mapnik::color("skyblue"));
            m2.set_background(mapnik::color("skyblue"));

            auto m1 = m0; //copy

            REQUIRE( (m0 == m1) );
            REQUIRE( (m0 != m2) );

            m2 = m1; // copy
            REQUIRE( (m2 == m1) );
            m2 = std::move(m1);
            REQUIRE( (m2 == m0) );
            REQUIRE( (m1 != m0) );

            REQUIRE( (m0 == m2) );
        }
    }
    catch (std::exception const & ex)
    {
        std::clog << ex.what() << "\n";
        REQUIRE(false);
    }
}
}