// Boost.Geometry Index // Additional tests // Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland. // Use, modification and distribution is subject to the Boost Software License, // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #ifndef TESTS_TRANSLATORS_HPP #define TESTS_TRANSLATORS_HPP #include #include #include #include #include #include #include template struct tests_translators_val { tests_translators_val(Indexable const& ii) : i(ii) {} Indexable const& get_box() const { return i; } bool operator==(tests_translators_val const& v2) { return boost::geometry::equals(i, v2.i); } Indexable i; }; BOOST_AUTO_TEST_CASE(tests_translators) { #ifdef TEST_PRINT_INFO std::cout << "tests/translators\n"; #endif namespace bg = boost::geometry; namespace bgm = bg::model; namespace bgi = bg::index; namespace bgit = bgi::translator; typedef bgm::point P; typedef bgm::box

B; bgit::def< P > p; bgit::def< P* > pp; bgit::def< std::pair* > ppip; bgit::def< boost::shared_ptr

> sp; bgit::def< std::vector

::iterator > ip; bgit::def< std::map::iterator > mip; bgit::def< std::pair > pip; bgit::def< boost::shared_ptr< std::pair > > spip; bgit::def< boost::shared_ptr< std::pair > > sppi; bgit::def< boost::scoped_ptr< std::pair > > scppi; bgit::def< boost::scoped_ptr< std::pair > > scpip; P tmp_p(2, 3); boost::shared_ptr

tmp_sp(new P(2, 3)); std::vector

tmp_v(1, P(2, 3)); std::map tmp_m; tmp_m.insert(std::pair(0, P(2, 3))); std::pair tmp_pip(0, P(2, 3)); boost::shared_ptr< std::pair > tmp_spip(new std::pair(0, P(2, 3))); boost::shared_ptr< std::pair > tmp_sppi(new std::pair(P(2, 3), 0)); boost::scoped_ptr< std::pair > tmp_scpip(new std::pair(0, P(2, 3))); boost::scoped_ptr< std::pair > tmp_scppi(new std::pair(P(2, 3), 0)); BOOST_CHECK( bg::equals(tmp_p, p(tmp_p)) ); BOOST_CHECK( bg::equals(tmp_p, pp(&tmp_p)) ); BOOST_CHECK( bg::equals(tmp_p, ppip(&tmp_pip)) ); BOOST_CHECK( bg::equals(tmp_p, sp(tmp_sp)) ); BOOST_CHECK( bg::equals(tmp_p, ip(tmp_v.begin())) ); BOOST_CHECK( bg::equals(tmp_p, mip(tmp_m.begin())) ); BOOST_CHECK( bg::equals(tmp_p, pip(tmp_pip)) ); BOOST_CHECK( bg::equals(tmp_p, spip(tmp_spip)) ); BOOST_CHECK( bg::equals(tmp_p, sppi(tmp_sppi)) ); BOOST_CHECK( bg::equals(tmp_p, scpip(tmp_scpip)) ); BOOST_CHECK( bg::equals(tmp_p, scppi(tmp_scppi)) ); //bgit::def d; // error //bgit::def< bgm::segment

> d; // error B tmp_b(P(2, 3), P(4, 5)); std::pair, B> tmp_ppb = std::make_pair(bgm::polygon

(), tmp_b); std::pair > tmp_pbp = std::make_pair(tmp_b, bgm::polygon

()); bgit::def< std::pair, B> > ppb; bgit::def< std::pair > > pbp; BOOST_CHECK( bg::equals(tmp_b, ppb(tmp_ppb)) ); BOOST_CHECK( bg::equals(tmp_b, pbp(tmp_pbp)) ); } #endif // TESTS_TRANSLATORS_HPP