Marked some tests as not being for Intel (for 600 s limit)

Added (commited) select_rings
Removed dissolver from solution
Added optional offset for interior_triangles.cpp


[SVN r70582]
This commit is contained in:
Barend Gehrels 2011-03-26 18:48:23 +00:00
parent 01bf7a9be1
commit 3d058b87d7
11 changed files with 329 additions and 47 deletions

View File

@ -362,12 +362,15 @@ int test_main(int, char* [])
//test_difference_parcel_precision<float>(); //test_difference_parcel_precision<float>();
//test_difference_parcel_precision<double>(); //test_difference_parcel_precision<double>();
test_all<bg::model::d2::point_xy<float> >();
test_all<bg::model::d2::point_xy<double> >(); test_all<bg::model::d2::point_xy<double> >();
#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
test_all<bg::model::d2::point_xy<float> >();
#ifdef HAVE_TTMATH #ifdef HAVE_TTMATH
test_all<bg::model::d2::point_xy<ttmath_big> >(); test_all<bg::model::d2::point_xy<ttmath_big> >();
//test_difference_parcel_precision<ttmath_big>(); //test_difference_parcel_precision<ttmath_big>();
#endif
#endif #endif
return 0; return 0;

View File

@ -348,14 +348,18 @@ void test_pointer_version()
int test_main(int, char* []) int test_main(int, char* [])
{ {
test_all<bg::model::d2::point_xy<float> >();
test_all<bg::model::d2::point_xy<double> >(); test_all<bg::model::d2::point_xy<double> >();
#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
test_all<bg::model::d2::point_xy<float> >();
#if defined(HAVE_TTMATH) #if defined(HAVE_TTMATH)
test_all<bg::model::d2::point_xy<ttmath_big> >(); test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif #endif
//test_pointer_version(); //test_pointer_version();
#endif
return 0; return 0;
} }

View File

@ -10,11 +10,10 @@ test-suite boost-geometry-algorithms-overlay
: :
[ run assemble.cpp ] [ run assemble.cpp ]
# [ run ccw_traverse.cpp ] # [ run ccw_traverse.cpp ]
# [ run dissolver.cpp ]
[ run get_turn_info.cpp ] [ run get_turn_info.cpp ]
[ run get_turns.cpp ] [ run get_turns.cpp ]
# [ run relative_order.cpp ] # [ run relative_order.cpp ]
[ run select_rings.cpp ]
# [ run self_intersection_points.cpp ] # [ run self_intersection_points.cpp ]
# [ run split_rings.cpp ]
[ run traverse.cpp ] [ run traverse.cpp ]
; ;

View File

@ -12,10 +12,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "relative_order", "relative_
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "assemble", "assemble.vcproj", "{306E829F-ACEC-42D5-B1D4-2531B2F56EA3}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "assemble", "assemble.vcproj", "{306E829F-ACEC-42D5-B1D4-2531B2F56EA3}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dissolver", "dissolver.vcproj", "{6CCB145C-C682-4B9F-8672-6D04DB5C76DD}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ccw_traverse", "ccw_traverse.vcproj", "{BA789719-B2FC-405A-9258-E9E4ABCE1791}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ccw_traverse", "ccw_traverse.vcproj", "{BA789719-B2FC-405A-9258-E9E4ABCE1791}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select_rings", "select_rings.vcproj", "{029117F7-1D6A-4A05-9FB7-93E09751C909}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32 Debug|Win32 = Debug|Win32
@ -46,14 +46,14 @@ Global
{306E829F-ACEC-42D5-B1D4-2531B2F56EA3}.Debug|Win32.Build.0 = Debug|Win32 {306E829F-ACEC-42D5-B1D4-2531B2F56EA3}.Debug|Win32.Build.0 = Debug|Win32
{306E829F-ACEC-42D5-B1D4-2531B2F56EA3}.Release|Win32.ActiveCfg = Release|Win32 {306E829F-ACEC-42D5-B1D4-2531B2F56EA3}.Release|Win32.ActiveCfg = Release|Win32
{306E829F-ACEC-42D5-B1D4-2531B2F56EA3}.Release|Win32.Build.0 = Release|Win32 {306E829F-ACEC-42D5-B1D4-2531B2F56EA3}.Release|Win32.Build.0 = Release|Win32
{6CCB145C-C682-4B9F-8672-6D04DB5C76DD}.Debug|Win32.ActiveCfg = Debug|Win32
{6CCB145C-C682-4B9F-8672-6D04DB5C76DD}.Debug|Win32.Build.0 = Debug|Win32
{6CCB145C-C682-4B9F-8672-6D04DB5C76DD}.Release|Win32.ActiveCfg = Release|Win32
{6CCB145C-C682-4B9F-8672-6D04DB5C76DD}.Release|Win32.Build.0 = Release|Win32
{BA789719-B2FC-405A-9258-E9E4ABCE1791}.Debug|Win32.ActiveCfg = Debug|Win32 {BA789719-B2FC-405A-9258-E9E4ABCE1791}.Debug|Win32.ActiveCfg = Debug|Win32
{BA789719-B2FC-405A-9258-E9E4ABCE1791}.Debug|Win32.Build.0 = Debug|Win32 {BA789719-B2FC-405A-9258-E9E4ABCE1791}.Debug|Win32.Build.0 = Debug|Win32
{BA789719-B2FC-405A-9258-E9E4ABCE1791}.Release|Win32.ActiveCfg = Release|Win32 {BA789719-B2FC-405A-9258-E9E4ABCE1791}.Release|Win32.ActiveCfg = Release|Win32
{BA789719-B2FC-405A-9258-E9E4ABCE1791}.Release|Win32.Build.0 = Release|Win32 {BA789719-B2FC-405A-9258-E9E4ABCE1791}.Release|Win32.Build.0 = Release|Win32
{029117F7-1D6A-4A05-9FB7-93E09751C909}.Debug|Win32.ActiveCfg = Debug|Win32
{029117F7-1D6A-4A05-9FB7-93E09751C909}.Debug|Win32.Build.0 = Debug|Win32
{029117F7-1D6A-4A05-9FB7-93E09751C909}.Release|Win32.ActiveCfg = Release|Win32
{029117F7-1D6A-4A05-9FB7-93E09751C909}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -33,13 +33,13 @@
template <typename Polygon> template <typename Polygon>
inline void make_polygon(Polygon& polygon, int count_x, int count_y, int index) inline void make_polygon(Polygon& polygon, int count_x, int count_y, int index, int offset)
{ {
typedef typename bg::point_type<Polygon>::type point_type; typedef typename bg::point_type<Polygon>::type point_type;
bg::exterior_ring(polygon).push_back(point_type(0, 0)); bg::exterior_ring(polygon).push_back(point_type(0, 0));
bg::exterior_ring(polygon).push_back(point_type(0, count_y * 10)); bg::exterior_ring(polygon).push_back(point_type(0, count_y * 10));
bg::exterior_ring(polygon).push_back(point_type(count_x * 10, count_y * 10)); bg::exterior_ring(polygon).push_back(point_type(count_x * 10 + 10, count_y * 10));
bg::exterior_ring(polygon).push_back(point_type(count_x * 10, 0)); bg::exterior_ring(polygon).push_back(point_type(count_x * 10 + 10, 0));
bg::exterior_ring(polygon).push_back(point_type(0, 0)); bg::exterior_ring(polygon).push_back(point_type(0, 0));
for(int j = 0; j < count_x; ++j) for(int j = 0; j < count_x; ++j)
@ -47,10 +47,10 @@ inline void make_polygon(Polygon& polygon, int count_x, int count_y, int index)
for(int k = 0; k < count_y; ++k) for(int k = 0; k < count_y; ++k)
{ {
polygon.inners().push_back(Polygon::inner_container_type::value_type()); polygon.inners().push_back(Polygon::inner_container_type::value_type());
polygon.inners().back().push_back(point_type(j * 10 + 1, k * 10 + 1)); polygon.inners().back().push_back(point_type(offset + j * 10 + 1, k * 10 + 1));
polygon.inners().back().push_back(point_type(j * 10 + 7, k * 10 + 5 + index)); polygon.inners().back().push_back(point_type(offset + j * 10 + 7, k * 10 + 5 + index));
polygon.inners().back().push_back(point_type(j * 10 + 5 + index, k * 10 + 7)); polygon.inners().back().push_back(point_type(offset + j * 10 + 5 + index, k * 10 + 7));
polygon.inners().back().push_back(point_type(j * 10 + 1, k * 10 + 1)); polygon.inners().back().push_back(point_type(offset + j * 10 + 1, k * 10 + 1));
} }
} }
bg::correct(polygon); bg::correct(polygon);
@ -59,12 +59,12 @@ inline void make_polygon(Polygon& polygon, int count_x, int count_y, int index)
template <typename Polygon> template <typename Polygon>
void test_star_comb(int count_x, int count_y, p_q_settings const& settings) void test_star_comb(int count_x, int count_y, int offset, p_q_settings const& settings)
{ {
Polygon p, q; Polygon p, q;
make_polygon(p, count_x, count_y, 0); make_polygon(p, count_x, count_y, 0, 0);
make_polygon(q, count_x, count_y, 1); make_polygon(q, count_x, count_y, 1, offset);
std::ostringstream out; std::ostringstream out;
out << "interior_triangles"; out << "interior_triangles";
@ -77,7 +77,7 @@ void test_star_comb(int count_x, int count_y, p_q_settings const& settings)
template <typename T, bool Clockwise, bool Closed> template <typename T, bool Clockwise, bool Closed>
void test_all(int count, int count_x, int count_y, p_q_settings const& settings) void test_all(int count, int count_x, int count_y, int offset, p_q_settings const& settings)
{ {
boost::timer t; boost::timer t;
@ -90,7 +90,7 @@ void test_all(int count, int count_x, int count_y, p_q_settings const& settings)
int index = 0; int index = 0;
for(int i = 0; i < count; i++) for(int i = 0; i < count; i++)
{ {
test_star_comb<polygon>(count_x, count_y, settings); test_star_comb<polygon>(count_x, count_y, offset, settings);
} }
std::cout std::cout
<< " type: " << string_from_type<T>::name() << " type: " << string_from_type<T>::name()
@ -104,6 +104,7 @@ int main(int argc, char** argv)
namespace po = boost::program_options; namespace po = boost::program_options;
po::options_description description("=== interior_triangles ===\nAllowed options"); po::options_description description("=== interior_triangles ===\nAllowed options");
int offset = 0;
int count = 1; int count = 1;
int count_x = 10; int count_x = 10;
int count_y = 10; int count_y = 10;
@ -116,6 +117,7 @@ int main(int argc, char** argv)
("count", po::value<int>(&count)->default_value(1), "Number of tests") ("count", po::value<int>(&count)->default_value(1), "Number of tests")
("count_x", po::value<int>(&count_x)->default_value(10), "Triangle count in x-direction") ("count_x", po::value<int>(&count_x)->default_value(10), "Triangle count in x-direction")
("count_y", po::value<int>(&count_y)->default_value(10), "Triangle count in y-direction") ("count_y", po::value<int>(&count_y)->default_value(10), "Triangle count in y-direction")
("offset", po::value<int>(&offset)->default_value(0), "Offset of second triangle in x-direction")
("diff", po::value<bool>(&settings.also_difference)->default_value(false), "Include testing on difference") ("diff", po::value<bool>(&settings.also_difference)->default_value(false), "Include testing on difference")
("ccw", po::value<bool>(&ccw)->default_value(false), "Counter clockwise polygons") ("ccw", po::value<bool>(&ccw)->default_value(false), "Counter clockwise polygons")
("open", po::value<bool>(&open)->default_value(false), "Open polygons") ("open", po::value<bool>(&open)->default_value(false), "Open polygons")
@ -135,19 +137,19 @@ int main(int argc, char** argv)
if (ccw && open) if (ccw && open)
{ {
test_all<double, false, false>(count, count_x, count_y, settings); test_all<double, false, false>(count, count_x, count_y, offset, settings);
} }
else if (ccw) else if (ccw)
{ {
test_all<double, false, true>(count, count_x, count_y, settings); test_all<double, false, true>(count, count_x, count_y, offset, settings);
} }
else if (open) else if (open)
{ {
test_all<double, true, false>(count, count_x, count_y, settings); test_all<double, true, false>(count, count_x, count_y, offset, settings);
} }
else else
{ {
test_all<double, true, true>(count, count_x, count_y, settings); test_all<double, true, true>(count, count_x, count_y, offset, settings);
} }
#if defined(HAVE_TTMATH) #if defined(HAVE_TTMATH)

View File

@ -0,0 +1,82 @@
// Boost.Geometry (aka GGL, Generic Geometry Library)
//
// Copyright Barend Gehrels, Geodan B.V. Amsterdam, the Netherlands.
// 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)
#include <geometry_test_common.hpp>
#include <algorithms/test_overlay.hpp>
#include <boost/range/algorithm/copy.hpp>
#include <boost/geometry/geometry.hpp>
#include <boost/geometry/algorithms/detail/overlay/select_rings.hpp>
#include <boost/geometry/algorithms/detail/overlay/assign_parents.hpp>
#include <boost/geometry/domains/gis/io/wkt/read_wkt.hpp>
#include <boost/assign/list_of.hpp>
#include <boost/foreach.hpp>
#include <boost/tuple/tuple.hpp>
template <typename Geometry1, typename Geometry2, bg::overlay_type OverlayType, typename Vector>
void test_geometry(std::string const& wkt1, std::string const& wkt2, Vector const& expected)
{
typedef bg::detail::overlay::ring_properties<typename bg::point_type<Geometry1>::type> properties;
Geometry1 geometry1;
Geometry2 geometry2;
bg::read_wkt(wkt1, geometry1);
bg::read_wkt(wkt2, geometry2);
typedef std::map<bg::ring_identifier, properties> map_type;
map_type selected;
std::map<bg::ring_identifier, int> empty;
bg::detail::overlay::select_rings<OverlayType>(geometry1, geometry2, empty, selected);
BOOST_CHECK_EQUAL(selected.size(), expected.size());
if (selected.size() <= expected.size())
{
BOOST_AUTO(eit, expected.begin());
for(typename map_type::const_iterator it = selected.begin(); it != selected.end(); ++it, ++eit)
{
bg::ring_identifier const ring_id = it->first;
BOOST_CHECK_EQUAL(ring_id.source_index, eit->template get<0>());
BOOST_CHECK_EQUAL(ring_id.multi_index, eit->template get<1>());
BOOST_CHECK_EQUAL(ring_id.ring_index, eit->template get<2>());
BOOST_CHECK_EQUAL(it->second.within_code, eit->template get<3>());
}
}
}
template <typename P>
void test_all()
{
// Point in correct clockwise ring -> should return true
test_geometry<bg::model::polygon<P>, bg::model::polygon<P>, bg::overlay_union>(
winded[0], winded[1],
boost::assign::tuple_list_of(0,-1,-1,-1)(0,-1,0,-1)(0,-1,1,-1)(0,-1,3,-1)(1,-1,1,-1)(1,-1,2,-1));
test_geometry<bg::model::polygon<P>, bg::model::polygon<P>, bg::overlay_intersection>(
winded[0], winded[1],
boost::assign::tuple_list_of(0,-1,2,1)(1,-1,-1,1)(1,-1,0,1)(1,-1,3,1));
}
int test_main( int , char* [] )
{
test_all<bg::model::d2::point_xy<double> >();
return 0;
}

View File

@ -0,0 +1,174 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="select_rings"
ProjectGUID="{029117F7-1D6A-4A05-9FB7-93E09751C909}"
RootNamespace="select_rings"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)\select_rings"
ConfigurationType="1"
InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=".;../../../../..;../..;../../../../../boost/geometry/extensions/contrib/ttmath"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;TEST_WITH_SVG"
ExceptionHandling="2"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
DebugInformationFormat="1"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)\select_rings"
ConfigurationType="1"
InheritedPropertySheets="..\..\boost.vsprops;..\..\ttmath.vsprops"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=".;../../../../..;../..;../../../../../boost/geometry/extensions/contrib/ttmath"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
ExceptionHandling="2"
UsePrecompiledHeader="0"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
RelativePath=".\select_rings.cpp"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -929,6 +929,9 @@ void test_ccw()
int test_main(int, char* []) int test_main(int, char* [])
{ {
#if defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
test_all<double>();
#else
test_all<float>(); test_all<float>();
test_all<double>(); test_all<double>();
test_open<double>(); test_open<double>();
@ -940,6 +943,7 @@ int test_main(int, char* [])
#ifdef HAVE_TTMATH #ifdef HAVE_TTMATH
test_all<ttmath_big>(); test_all<ttmath_big>();
#endif
#endif #endif
return 0; return 0;

View File

@ -305,12 +305,15 @@ void test_all()
int test_main(int, char* []) int test_main(int, char* [])
{ {
test_all<bg::model::d2::point_xy<float> >();
test_all<bg::model::d2::point_xy<double> >(); test_all<bg::model::d2::point_xy<double> >();
#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
test_all<bg::model::d2::point_xy<float> >();
//test_all<bg::model::d2::point_xy<long double> >(); //test_all<bg::model::d2::point_xy<long double> >();
#if defined(HAVE_TTMATH) #if defined(HAVE_TTMATH)
test_all<bg::model::d2::point_xy<ttmath_big> >(); test_all<bg::model::d2::point_xy<ttmath_big> >();
#endif
#endif #endif
return 0; return 0;

View File

@ -19,6 +19,15 @@
//#pragma warning( disable : 4305 ) //#pragma warning( disable : 4305 )
#endif // defined(_MSC_VER) #endif // defined(_MSC_VER)
#include <boost/config.hpp>
#if defined(BOOST_INTEL_CXX_VERSION)
#define BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE
#endif
#include <boost/foreach.hpp> #include <boost/foreach.hpp>

View File

@ -145,6 +145,8 @@ void test_all()
typedef bg::model::multi_polygon<polygon> multi_polygon; typedef bg::model::multi_polygon<polygon> multi_polygon;
test_areal<ring, polygon, multi_polygon>(); test_areal<ring, polygon, multi_polygon>();
#if ! defined(BOOST_GEOMETRY_TEST_ONLY_ONE_TYPE)
typedef bg::model::ring<P, false> ring_ccw; typedef bg::model::ring<P, false> ring_ccw;
typedef bg::model::polygon<P, false> polygon_ccw; typedef bg::model::polygon<P, false> polygon_ccw;
typedef bg::model::multi_polygon<polygon_ccw> multi_polygon_ccw; typedef bg::model::multi_polygon<polygon_ccw> multi_polygon_ccw;
@ -167,7 +169,7 @@ void test_all()
typedef bg::model::multi_linestring<linestring> multi_linestring; typedef bg::model::multi_linestring<linestring> multi_linestring;
test_linear<linestring, multi_linestring, box>(); test_linear<linestring, multi_linestring, box>();
#endif
// linear // linear