• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Boost.Geometry (aka GGL, Generic Geometry Library)
2 // Unit Test
3 
4 // Copyright (c) 2016 Oracle and/or its affiliates.
5 // Contributed and/or modified by Vissarion Fisikopoulos, on behalf of Oracle
6 
7 // Use, modification and distribution is subject to the Boost Software License,
8 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
9 // http://www.boost.org/LICENSE_1_0.txt)
10 
11 #include <algorithms/test_perimeter.hpp>
12 
13 #include <boost/geometry/geometries/geometries.hpp>
14 #include <boost/geometry/geometries/point_xy.hpp>
15 
16 template <typename P>
test_all()17 void test_all()
18 {
19     // Simple
20     test_geometry<bg::model::polygon<P> >("POLYGON((0 0,3 4,4 3,0 0))",
21                                           5 + sqrt(2.0) + 5);
22     // Non-simple
23     test_geometry<bg::model::polygon<P> >("POLYGON((0 0,3 4,4 3,0 3,0 0))",
24                                           5 + sqrt(2.0) + 4 + 3);
25     // With holes
26     test_geometry<bg::model::polygon<P> >("POLYGON((0 0,3 4,4 3,0 0),\
27                                                    (2 2,3 4,3 3,2 2))",
28                                           5 + sqrt(2.0) + 5 +
29                                           sqrt(5.0) + 1 + sqrt(2.0));
30     // Repeated points
31     test_geometry<bg::model::polygon<P> >("POLYGON((0 0,3 4,3 4,3 4,4 3,4 3,\
32                                                     4 3,4 3,4 3,4 3,0 3,0 0))",
33                                           5 + sqrt(2.0) + 4 + 3);
34     // Multipolygon
35     test_geometry<bg::model::multi_polygon<bg::model::polygon<P> > >
36     (
37         "MULTIPOLYGON(((0 0,3 4,4 3,0 0)), ((0 0,3 4,4 3,0 3,0 0)))",
38         5 + sqrt(2.0) + 5 + 5 + sqrt(2.0) + 4 + 3
39     );
40 
41     // Geometries with perimeter zero
42     test_geometry<P>("POINT(0 0)", 0);
43     test_geometry<bg::model::linestring<P> >("LINESTRING(0 0,3 4,4 3)", 0);
44 }
45 
46 template <typename P>
test_empty_input()47 void test_empty_input()
48 {
49     test_empty_input(bg::model::polygon<P>());
50     test_empty_input(bg::model::multi_polygon<bg::model::polygon<P> >());
51 }
52 
test_main(int,char * [])53 int test_main(int, char* [])
54 {
55     test_all<bg::model::d2::point_xy<int> >();
56     test_all<bg::model::d2::point_xy<float> >();
57     test_all<bg::model::d2::point_xy<double> >();
58 
59 #if defined(HAVE_TTMATH)
60     test_all<bg::model::d2::point_xy<ttmath_big> >();
61 #endif
62 
63     // test_empty_input<bg::model::d2::point_xy<int> >();
64 
65     return 0;
66 }
67