File: interior.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 (42 lines) | stat: -rw-r--r-- 1,086 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
#include "catch.hpp"

#include <mapnik/geometry/interior.hpp>

TEST_CASE("polygon interior")
{
    SECTION("empty polygon")
    {
        mapnik::geometry::polygon<double> poly;
        mapnik::geometry::point<double> pt;

        CHECK(!mapnik::geometry::interior(poly, 1.0, pt));
    }

    SECTION("empty exterior ring")
    {
        mapnik::geometry::polygon<double> poly;
        poly.emplace_back();

        mapnik::geometry::point<double> pt;

        CHECK(!mapnik::geometry::interior(poly, 1.0, pt));
    }

    SECTION("interior of a square")
    {
        mapnik::geometry::polygon<double> poly;
        poly.emplace_back();
        auto& exterior_ring = poly.front();
        exterior_ring.emplace_back(-1, -1);
        exterior_ring.emplace_back(1, -1);
        exterior_ring.emplace_back(1, 1);
        exterior_ring.emplace_back(-1, 1);
        exterior_ring.emplace_back(-1, -1);

        mapnik::geometry::point<double> pt{-3, -3};

        CHECK(mapnik::geometry::interior(poly, 1.0, pt));
        CHECK(pt.x == Approx(0));
        CHECK(pt.y == Approx(0));
    }
}