• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Boost.Geometry
2 // Unit Test
3 
4 // Copyright (c) 2016, Oracle and/or its affiliates.
5 
6 // Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
7 
8 // Use, modification and distribution is subject to the Boost Software License,
9 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
10 // http://www.boost.org/LICENSE_1_0.txt)
11 
12 
13 #include "test_relate.hpp"
14 
15 #include <algorithms/overlay/overlay_cases.hpp>
16 #include <algorithms/overlay/multi_overlay_cases.hpp>
17 
18 
19 template <typename P>
test_polygon_polygon()20 void test_polygon_polygon()
21 {
22     typedef bg::model::polygon<P> poly;
23     typedef bg::model::ring<P> ring;
24 
25     test_geometry<ring, ring>(case_1[0], case_1[1],
26                               "212101212");
27     test_geometry<ring, poly>(case_1[0], case_1[1],
28                               "212101212");
29 
30     test_geometry<poly, poly>(case_1[0], case_1[1],
31                               "212101212");
32     test_geometry<poly, poly>(case_2[0], case_2[1],
33                               "212101212");
34     test_geometry<poly, poly>(case_3_sph[0], case_3_sph[1],
35                               "2FF10F212");
36     test_geometry<poly, poly>(case_3_2_sph[0], case_3_2_sph[1],
37                               "2FFF1FFF2");
38     test_geometry<poly, poly>(case_4[0], case_4[1],
39                               "212101212");
40     test_geometry<poly, poly>(case_5[0], case_5[1],
41                               "212101212");
42     test_geometry<poly, poly>(case_6_sph[0], case_6_sph[1],
43                               "212F11FF2");
44 
45     test_geometry<poly, poly>(case_7[0], case_7[1],
46                               "FF2F11212");
47     test_geometry<poly, poly>(case_8_sph[0], case_8_sph[1],
48                               "FF2F11212");
49     test_geometry<poly, poly>(case_9_sph[0], case_9_sph[1],
50                               "FF2F01212");
51     test_geometry<poly, poly>(case_10_sph[0], case_10_sph[1],
52                               "FF2F11212");
53     test_geometry<poly, poly>(case_11_sph[0], case_11_sph[1],
54                               "212F01FF2");
55     test_geometry<poly, poly>(case_12[0], case_12[1],
56                               "212101212");
57 
58     test_geometry<poly, poly>(case_13_sph[0], case_13_sph[1],
59                               "FF2F11212");
60     test_geometry<poly, poly>(case_14_sph[0], case_14_sph[1],
61                               "FF2F11212");
62     test_geometry<poly, poly>(case_15_sph[0], case_15_sph[1],
63                               "FF2F11212");
64     test_geometry<poly, poly>(case_16_sph[0], case_16_sph[1],
65                               "FF2F11212");
66     test_geometry<poly, poly>(case_17_sph[0], case_17_sph[1],
67                               "212F11FF2");
68     test_geometry<poly, poly>(case_18_sph[0], case_18_sph[1],
69                               "212F11FF2");
70 }
71 
72 template <typename P>
test_polygon_multi_polygon()73 void test_polygon_multi_polygon()
74 {
75     typedef bg::model::polygon<P> poly;
76     typedef bg::model::ring<P> ring;
77     typedef bg::model::multi_polygon<poly> mpoly;
78 
79     test_geometry<ring, mpoly>(case_1[0], case_multi_2[0],
80                                "212101212");
81     test_geometry<poly, mpoly>(case_2[0], case_multi_2[0],
82                                "212101212");
83 }
84 
85 template <typename P>
test_multi_polygon_multi_polygon()86 void test_multi_polygon_multi_polygon()
87 {
88     typedef bg::model::polygon<P> poly;
89     typedef bg::model::multi_polygon<poly> mpoly;
90 
91     test_geometry<mpoly, mpoly>(case_multi_2[0], case_multi_2[1],
92                                 "212101212");
93 }
94 
95 
96 template <typename P>
test_all()97 void test_all()
98 {
99     test_polygon_polygon<P>();
100     test_polygon_multi_polygon<P>();
101     test_multi_polygon_multi_polygon<P>();
102 }
103 
test_main(int,char * [])104 int test_main( int , char* [] )
105 {
106     typedef bg::cs::spherical_equatorial<bg::degree> cs_t;
107     test_all<bg::model::point<float, 2, cs_t> >();
108     test_all<bg::model::point<double, 2, cs_t> >();
109 
110 #if defined(HAVE_TTMATH)
111     test_all<bg::model::point<ttmath_big, 2, cs_t> >();
112 #endif
113 
114     return 0;
115 }
116