summaryrefslogtreecommitdiffstats
path: root/library/cpp/geo/ut/polygon_ut.cpp
blob: cd9dee9759ce718024cf7b8697a5a250058678e4 (plain) (blame)
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
#include "polygon.h"

#include <library/cpp/testing/unittest/registar.h>

using namespace NGeo;

Y_UNIT_TEST_SUITE(TGeoPolygonTest) {
    Y_UNIT_TEST(TestEmptyPolygon) {
        TGeoPolygon empty;
        UNIT_ASSERT(!empty);
        UNIT_ASSERT(!empty.IsValid());
    }

    Y_UNIT_TEST(TestPolygon) {
        TGeoPolygon polygon({{1., 2.}, {2., 1.}, {2., 4.}, {1., 3.}});
        UNIT_ASSERT(polygon.IsValid());
        UNIT_ASSERT_EQUAL(polygon.GetWindow(),
                          TGeoWindow(TGeoPoint(1., 1.), TGeoPoint(2., 4.)));
    }

    Y_UNIT_TEST(TestParse) {
        UNIT_ASSERT_EQUAL(TGeoPolygon::Parse(TString{"1.23,5.67 7.89,10.11 11.10,9.87"}),
                          NGeo::TGeoPolygon({{1.23, 5.67}, {7.89, 10.11}, {11.10, 9.87}}));
        UNIT_ASSERT_EQUAL(TGeoPolygon::Parse(TString{"1.23,5.67 7.89,10.11 11.10,9.87 6.54,3.21"}),
                          NGeo::TGeoPolygon({{1.23, 5.67}, {7.89, 10.11}, {11.10, 9.87}, {6.54, 3.21}}));

        UNIT_ASSERT(TGeoPolygon::TryParse(TString{"1.23,5.67 7.89,10.11"}).Empty());
        UNIT_ASSERT_EQUAL(TGeoPolygon::Parse(TString{"1.23+5.67~7.89+10.11~11.10+9.87"}, "+", "~"),
                          NGeo::TGeoPolygon({{1.23, 5.67}, {7.89, 10.11}, {11.10, 9.87}}));

        UNIT_ASSERT_EQUAL(TGeoPolygon::Parse(TString{"1.23+5.67+~7.89+10.11+~11.10+9.87"}, "+", "+~"),
                          NGeo::TGeoPolygon({{1.23, 5.67}, {7.89, 10.11}, {11.10, 9.87}}));
    }
}