]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/geometry/test/algorithms/relational_operations/disjoint/test_disjoint.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / geometry / test / algorithms / relational_operations / disjoint / test_disjoint.hpp
CommitLineData
7c673cae
FG
1// Boost.Geometry (aka GGL, Generic Geometry Library)
2// Unit Test
3
4// Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands.
5// Copyright (c) 2008-2015 Bruno Lalande, Paris, France.
6// Copyright (c) 2009-2015 Mateusz Loskot, London, UK.
7
b32b8144
FG
8// This file was modified by Oracle on 2017.
9// Modifications copyright (c) 2017 Oracle and/or its affiliates.
10// Contributed and/or modified by Adam Wulkiewicz, on behalf of Oracle
11
7c673cae
FG
12// Parts of Boost.Geometry are redesigned from Geodan's Geographic Library
13// (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands.
14
15// Use, modification and distribution is subject to the Boost Software License,
16// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
17// http://www.boost.org/LICENSE_1_0.txt)
18
19#ifndef BOOST_GEOMETRY_TEST_DISJOINT_HPP
20#define BOOST_GEOMETRY_TEST_DISJOINT_HPP
21
22#include <iostream>
23#include <string>
24#include <boost/variant/variant.hpp>
25
26#include <geometry_test_common.hpp>
27
28#include <boost/geometry/algorithms/disjoint.hpp>
29#include <boost/geometry/io/wkt/read.hpp>
30
31
b32b8144
FG
32struct no_strategy {};
33
34template <typename Geometry1, typename Geometry2, typename Strategy>
35bool call_disjoint(Geometry1 const& geometry1,
36 Geometry2 const& geometry2,
37 Strategy const& strategy)
38{
39 return bg::disjoint(geometry1, geometry2, strategy);
40}
41
42template <typename Geometry1, typename Geometry2>
43bool call_disjoint(Geometry1 const& geometry1,
44 Geometry2 const& geometry2,
45 no_strategy)
46{
47 return bg::disjoint(geometry1, geometry2);
48}
49
50template <typename G1, typename G2, typename Strategy>
7c673cae
FG
51void check_disjoint(std::string const& id,
52 std::string const& wkt1,
53 std::string const& wkt2,
54 G1 const& g1,
55 G2 const& g2,
b32b8144
FG
56 bool expected,
57 Strategy const& strategy)
7c673cae 58{
b32b8144 59 bool detected = call_disjoint(g1, g2, strategy);
7c673cae
FG
60 if (id.empty())
61 {
62 BOOST_CHECK_MESSAGE(detected == expected,
63 "disjoint: " << wkt1 << " and " << wkt2
64 << " -> Expected: " << expected
65 << " detected: " << detected);
66 }
67 else
68 {
69 BOOST_CHECK_MESSAGE(detected == expected,
70 "disjoint: " << id
71 << " -> Expected: " << expected
72 << " detected: " << detected);
73 }
74}
75
76template <typename G1, typename G2>
77void test_disjoint(std::string const& id,
78 std::string const& wkt1,
79 std::string const& wkt2,
80 bool expected)
81{
82 G1 g1;
83 bg::read_wkt(wkt1, g1);
84
85 G2 g2;
86 bg::read_wkt(wkt2, g2);
87
88 boost::variant<G1> v1(g1);
89 boost::variant<G2> v2(g2);
90
b32b8144
FG
91 typedef typename bg::strategy::disjoint::services::default_strategy
92 <
93 G1, G2
94 >::type strategy_type;
95
96 check_disjoint(id, wkt1, wkt2, g1, g2, expected, no_strategy());
97 check_disjoint(id, wkt1, wkt2, g1, g2, expected, strategy_type());
98 check_disjoint(id, wkt1, wkt2, g1, g2, expected, no_strategy());
99 check_disjoint(id, wkt1, wkt2, v1, g2, expected, no_strategy());
100 check_disjoint(id, wkt1, wkt2, g1, v2, expected, no_strategy());
101 check_disjoint(id, wkt1, wkt2, v1, v2, expected, no_strategy());
7c673cae
FG
102}
103
104template <typename G1, typename G2>
105void test_geometry(std::string const& wkt1,
106 std::string const& wkt2,
107 bool expected)
108{
109 test_disjoint<G1, G2>("", wkt1, wkt2, expected);
110}
111
112#endif // BOOST_GEOMETRY_TEST_DISJOINT_HPP