Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r69570 - in trunk/libs/geometry/test: algorithms algorithms/overlay/robustness multi multi/algorithms multi/algorithms/overlay
From: barend.gehrels_at_[hidden]
Date: 2011-03-04 16:44:04


Author: barendgehrels
Date: 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
New Revision: 69570
URL: http://svn.boost.org/trac/boost/changeset/69570

Log:
Added tests for empty polygons in intersection,union,difference
Added testfiles for multi_difference.cpp, multi_transform.cpp
Added program options in robusness tests

Added:
   trunk/libs/geometry/test/multi/algorithms/multi_difference.cpp (contents, props changed)
   trunk/libs/geometry/test/multi/algorithms/multi_difference.vcproj (contents, props changed)
   trunk/libs/geometry/test/multi/algorithms/multi_transform.cpp (contents, props changed)
   trunk/libs/geometry/test/multi/algorithms/multi_transform.vcproj (contents, props changed)
Text files modified:
   trunk/libs/geometry/test/algorithms/difference.cpp | 19 ++++++-----
   trunk/libs/geometry/test/algorithms/intersection.cpp | 45 +++++++++++++++-----------
   trunk/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.cpp | 31 +++++++++++++++---
   trunk/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.vcproj | 48 +++++++++++++++++++++++++++-
   trunk/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.cpp | 66 +++++++++++++++++++++++++--------------
   trunk/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.vcproj | 48 +++++++++++++++++++++++++++-
   trunk/libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp | 4 +-
   trunk/libs/geometry/test/algorithms/test_difference.hpp | 15 +++++++++
   trunk/libs/geometry/test/algorithms/test_overlay.hpp | 1
   trunk/libs/geometry/test/algorithms/union.cpp | 15 ++++++--
   trunk/libs/geometry/test/multi/algorithms/Jamfile.v2 | 2 +
   trunk/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp | 2
   trunk/libs/geometry/test/multi/multi_tests.sln | 12 +++++++
   13 files changed, 240 insertions(+), 68 deletions(-)

Modified: trunk/libs/geometry/test/algorithms/difference.cpp
==============================================================================
--- trunk/libs/geometry/test/algorithms/difference.cpp (original)
+++ trunk/libs/geometry/test/algorithms/difference.cpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -38,6 +38,16 @@
     typedef bg::model::polygon<P> polygon;
     typedef bg::model::ring<P> ring;
 
+ test_one<polygon, polygon, polygon>("simplex_normal",
+ simplex_normal[0], simplex_normal[1],
+ 3, 3, 2.52636706856656,
+ 3, 3, 3.52636706856656);
+
+ test_one<polygon, polygon, polygon>("simplex_with_empty",
+ simplex_normal[0], polygon_empty,
+ 1, 4, 8.0,
+ 0, 0, 0.0);
+
     test_one<polygon, polygon, polygon>(
             "star_ring", example_star, example_ring,
             5, 22, 1.1901714,
@@ -53,11 +63,6 @@
         30, 150, 227.658275102812,
         30, 150, 480.485775259312);
 
- test_one<polygon, polygon, polygon>("simplex_normal",
- simplex_normal[0], simplex_normal[1],
- 3, 3, 2.52636706856656,
- 3, 3, 3.52636706856656);
-
     test_one<polygon, polygon, polygon>("new_hole",
         new_hole[0], new_hole[1],
         1, 10, 7.0,
@@ -235,10 +240,6 @@
     {
         typedef bg::model::multi_polygon<polygon> mp;
 
- test_one<polygon, mp, mp>("simplex_multi",
- case_multi_simplex[0], case_multi_simplex[1],
- 5, 12, 5.58, 4, 12, 2.58);
-
         static std::string const clip = "POLYGON((2 2,4 4))";
 
         test_one<polygon, box, mp>("simplex_multi_box_mp",

Modified: trunk/libs/geometry/test/algorithms/intersection.cpp
==============================================================================
--- trunk/libs/geometry/test/algorithms/intersection.cpp (original)
+++ trunk/libs/geometry/test/algorithms/intersection.cpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -23,10 +23,26 @@
 #include <test_common/with_pointer.hpp>
 #include <test_geometries/custom_segment.hpp>
 
+static std::string pie_2_3_23_0[2] =
+{
+ "POLYGON((2500 2500,2855 3828,2500 3875,2500 2500))",
+ "POLYGON((2500 2500,2791 3586,2499 3625,2208 3586,2500 2500))"
+};
 
 template <typename Polygon>
 void test_areal()
 {
+ /*test_one<Polygon, Polygon, Polygon>("pie_2_3_23_0",
+ pie_2_3_23_0[0], pie_2_3_23_0[1],
+ 1, 4, 163292.677335535, 0.01);*/
+
+ test_one<Polygon, Polygon, Polygon>("simplex_with_empty_1",
+ simplex_normal[0], polygon_empty,
+ 0, 0, 0.0);
+ test_one<Polygon, Polygon, Polygon>("simplex_with_empty_2",
+ polygon_empty, simplex_normal[0],
+ 0, 0, 0.0);
+
     test_one<Polygon, Polygon, Polygon>("simplex_normal",
         simplex_normal[0], simplex_normal[1],
         1, 7, 5.47363293);
@@ -150,16 +166,6 @@
             "Polygon((0 0,0 4,4 4,4 0,0 0))",
             "Polygon((2 -2,2 -1,2 6,2 -2))",
             5, 22, 1.1901714);
-
-
-
- // Test the REVERSE case - does not give correct results yet
- /*
- test_one<Polygon, Polygon, Polygon>("icovist_r",
- isovist[0], isovist[2],
- 1, 4, 0.29516139, 0.01);
- */
-
 }
 
 template <typename Polygon, typename Box>
@@ -180,23 +186,26 @@
     test_one<Polygon, Box, Polygon>("clip_poly2", example_box,
         "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 2.5,5.3 2.5,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3))",
         2, 12, 1.00375);
+
     test_one<Polygon, Box, Polygon>("clip_poly3", example_box,
         "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 2.5,4.5 2.5,4.5 1.2,4.9 0.8,2.9 0.7,2 1.3))",
         2, 12, 1.00375);
+
     test_one<Polygon, Box, Polygon>("clip_poly4", example_box,
         "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 2.5,4.5 2.5,4.5 2.3,5.0 2.3,5.0 2.1,4.5 2.1,4.5 1.9,4.0 1.9,4.5 1.2,4.9 0.8,2.9 0.7,2 1.3))",
         2, 16, 0.860892);
 
     test_one<Polygon, Box, Polygon>("clip_poly5", example_box,
- "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 2.5,4.5 1.2,2.9 0.7,2 1.3))",
- 2, 11, 0.7575961);
+ "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 2.5,4.5 1.2,2.9 0.7,2 1.3))",
+ 2, 11, 0.7575961);
 
     test_one<Polygon, Box, Polygon>("clip_poly6", example_box,
- "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.0 3.0,5.0 2.0,2.9 0.7,2 1.3))",
- 2, 13, 1.0744456);
+ "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.0 3.0,5.0 2.0,2.9 0.7,2 1.3))",
+ 2, 13, 1.0744456);
 
     test_one<Polygon, Box, Polygon>("clip_poly7", "Box(0 0, 3 3)",
- "POLYGON((2 2, 1 4, 2 4, 3 3, 2 2))", 1, 4, 0.75);
+ "POLYGON((2 2, 1 4, 2 4, 3 3, 2 2))",
+ 1, 4, 0.75);
 }
 
 template <typename Box>
@@ -234,6 +243,7 @@
 
     // Test polygons clockwise and counter clockwise
     test_areal<polygon>();
+
     test_areal<polygon_ccw>();
     test_areal<polygon_open>();
     test_areal<polygon_ccw_open>();
@@ -278,9 +288,6 @@
     // which occur 4 times, the length is expected to be 2.0)
     test_one<linestring, linestring, box>("llb_2", "LINESTRING(1.7 1.6,2.3 2.4,2.9 1.6,3.5 2.4,4.1 1.6)", clip, 2, 6, 4 * 0.5);
     
-
-
-
     // linear
     test_one<P, linestring, linestring>("llp1", "LINESTRING(0 0,1 1)", "LINESTRING(0 1,1 0)", 1, 1, 0);
     test_one<P, segment, segment>("ssp1", "LINESTRING(0 0,1 1)", "LINESTRING(0 1,1 0)", 1, 1, 0);
@@ -345,7 +352,7 @@
     test_all<bg::model::d2::point_xy<double> >();
 
 #if defined(HAVE_TTMATH)
- test_all<bg::model::d2::point_xy<ttmath_big> >();
+ test_all<bg::model::d2::point_xy<ttmath_big> >();
 #endif
 
     //test_pointer_version();

Modified: trunk/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.cpp
==============================================================================
--- trunk/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.cpp (original)
+++ trunk/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.cpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -11,8 +11,8 @@
 #define BOOST_GEOMETRY_REPORT_OVERLAY_ERROR
 #define BOOST_GEOMETRY_NO_BOOST_TEST
 
+#include <boost/program_options.hpp>
 #include <boost/timer.hpp>
-#include <boost/lexical_cast.hpp>
 
 #include <test_overlay_p_q.hpp>
 
@@ -244,12 +244,33 @@
 {
     try
     {
- bool svg = argc > 1 && std::string(argv[1]) == std::string("svg");
- bool multi = argc > 2 && std::string(argv[2]) == std::string("multi");
- bool ccw = argc > 3 && std::string(argv[3]) == std::string("ccw");
- bool open = argc > 4 && std::string(argv[4]) == std::string("open");
+ namespace po = boost::program_options;
+ po::options_description description("=== recursive_polygons ===\nAllowed options");
+
+ bool svg = false;
+ bool multi = false;
+ bool ccw = false;
+ bool open = false;
         bool single_selftangent = false; // keep false, true does not work!
 
+ description.add_options()
+ ("help", "Help message")
+ ("svg", po::value<bool>(&svg)->default_value(false), "Create an SVG filename for all tests")
+ ("multi", po::value<bool>(&multi)->default_value(false), "Multiple tangencies at one point")
+ ("ccw", po::value<bool>(&ccw)->default_value(false), "Counter clockwise polygons")
+ ("open", po::value<bool>(&open)->default_value(false), "Open polytons")
+ ;
+
+ po::variables_map varmap;
+ po::store(po::parse_command_line(argc, argv, description), varmap);
+ po::notify(varmap);
+
+ if (varmap.count("help"))
+ {
+ std::cout << description << std::endl;
+ return 1;
+ }
+
         // template par's are: CoordinateType, Clockwise, Closed
         if (ccw && open)
         {

Modified: trunk/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.vcproj
==============================================================================
--- trunk/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.vcproj (original)
+++ trunk/libs/geometry/test/algorithms/overlay/robustness/intersection_pies.vcproj 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -42,7 +42,7 @@
                                 Name="VCCLCompilerTool"
                                 Optimization="0"
                                 AdditionalIncludeDirectories="&quot;c:\gmp\gmp-dynamic&quot;;c:\svn\numeric_adaptor;.;../../../../../..;../../.."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;TEST_WITH_SVG"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;TEST_WITH_SVG;BOOST_ALL_NO_LIB"
                                 BasicRuntimeChecks="3"
                                 RuntimeLibrary="1"
                                 UsePrecompiledHeader="0"
@@ -118,7 +118,7 @@
                         <Tool
                                 Name="VCCLCompilerTool"
                                 AdditionalIncludeDirectories="&quot;c:\gmp\gmp-dynamic&quot;;c:\svn\numeric_adaptor;.;../../../../../..;../../.."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
                                 UsePrecompiledHeader="0"
                                 WarningLevel="3"
                                 Detect64BitPortabilityProblems="true"
@@ -169,6 +169,50 @@
         <References>
         </References>
         <Files>
+ <Filter
+ Name="program options"
+ >
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\split.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
+ >
+ </File>
+ </Filter>
                 <File
                         RelativePath=".\intersection_pies.cpp"
>

Modified: trunk/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.cpp
==============================================================================
--- trunk/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.cpp (original)
+++ trunk/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.cpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -15,12 +15,12 @@
 #define BOOST_GEOMETRY_NO_BOOST_TEST
 
 
-#include <boost/timer.hpp>
-#include <boost/lexical_cast.hpp>
+#include <boost/program_options.hpp>
 #include <boost/random/linear_congruential.hpp>
 #include <boost/random/uniform_int.hpp>
 #include <boost/random/uniform_real.hpp>
 #include <boost/random/variate_generator.hpp>
+#include <boost/timer.hpp>
 
 #include <test_overlay_p_q.hpp>
 
@@ -32,7 +32,7 @@
 
 
 template <typename Polygon, typename Generator>
-inline void make_polygon(Polygon& polygon, Generator& generator)
+inline void make_polygon(Polygon& polygon, Generator& generator, bool triangular)
 {
     typedef typename bg::point_type<Polygon>::type point_type;
     typedef typename bg::coordinate_type<Polygon>::type coordinate_type;
@@ -50,7 +50,7 @@
     bg::set<0>(p, x + 1); bg::set<1>(p, y); ring.push_back(p);
     bg::set<0>(p, x); bg::set<1>(p, y); ring.push_back(p);
 
- if (true)
+ if (triangular)
     {
         // Remove a point depending on generator
         int c = generator() % 4;
@@ -66,7 +66,7 @@
 template <typename MultiPolygon, typename Generator>
 bool test_recursive_boxes(MultiPolygon& result, int& index,
             Generator& generator,
- bool svg, int level = 3)
+ bool svg, int level, bool triangular)
 {
     MultiPolygon p, q;
 
@@ -75,8 +75,8 @@
     {
         p.resize(1);
         q.resize(1);
- make_polygon(p.front(), generator);
- make_polygon(q.front(), generator);
+ make_polygon(p.front(), generator, triangular);
+ make_polygon(q.front(), generator, triangular);
         bg::correct(p);
         bg::correct(q);
     }
@@ -84,8 +84,8 @@
     {
         bg::correct(p);
         bg::correct(q);
- if (! test_recursive_boxes(p, index, generator, svg, level - 1)
- || ! test_recursive_boxes(q, index, generator, svg, level - 1))
+ if (! test_recursive_boxes(p, index, generator, svg, level - 1, triangular)
+ || ! test_recursive_boxes(q, index, generator, svg, level - 1, triangular))
         {
             return false;
         }
@@ -118,7 +118,7 @@
 
 
 template <typename T, bool Clockwise, bool Closed>
-void test_all(int seed, int count, int fieldsize, bool svg, int level)
+void test_all(int seed, int count, int field_size, bool svg, int level, bool triangular)
 {
     boost::timer t;
 
@@ -126,7 +126,7 @@
 
     base_generator_type generator(seed);
 
- boost::uniform_int<> random_coordinate(0, fieldsize);
+ boost::uniform_int<> random_coordinate(0, field_size - 1);
     boost::variate_generator<base_generator_type&, boost::uniform_int<> >
         coordinate_generator(generator, random_coordinate);
 
@@ -141,7 +141,7 @@
     for(int i = 0; i < count; i++)
     {
         mp p;
- test_recursive_boxes<mp>(p, index, coordinate_generator, svg, level);
+ test_recursive_boxes<mp>(p, index, coordinate_generator, svg, level, triangular);
     }
     std::cout
         << "boxes " << index
@@ -153,20 +153,38 @@
 {
     try
     {
- // Arguments:
- // {count} {seed} {"svg"} {level}
- int count = argc > 1 ? boost::lexical_cast<int>(argv[1]) : 10;
- int seed = (argc > 2 && std::string(argv[2]) != std::string("#"))
- ? boost::lexical_cast<int>(argv[2])
- : static_cast<unsigned int>(std::time(0));
- bool svg = argc > 3 && std::string(argv[3]) == std::string("svg");
- int level = argc > 4 && std::string(argv[4]) != std::string("#")
- ? boost::lexical_cast<int>(argv[4]): 3;
+ namespace po = boost::program_options;
+ po::options_description description("=== recursive_polygons ===\nAllowed options");
+
+ int count = 1;
+ int seed = static_cast<unsigned int>(std::time(0));
+ int level = 3;
+ int field_size = 10;
+ bool svg = false;
+ std::string form = "box";
+
+ description.add_options()
+ ("help", "Help message")
+ ("seed", po::value<int>(&seed), "Initialization seed for random generator")
+ ("count", po::value<int>(&count)->default_value(1), "Number of tests")
+ ("level", po::value<int>(&level)->default_value(3), "Level to reach (higher->slower)")
+ ("size", po::value<int>(&field_size)->default_value(10), "Size of the field")
+ ("form", po::value<std::string>(&form)->default_value("box"), "Form of the polygons (box, triangle)")
+ ("svg", po::value<bool>(&svg)->default_value(false), "Create an SVG filename for all tests")
+ ;
+
+ po::variables_map varmap;
+ po::store(po::parse_command_line(argc, argv, description), varmap);
+ po::notify(varmap);
+
+ if (varmap.count("help"))
+ {
+ std::cout << description << std::endl;
+ return 1;
+ }
 
- int fieldsize = argc > 5 && std::string(argv[5]) != std::string("#")
- ? boost::lexical_cast<int>(argv[5]): 9;
 
- test_all<double, true, true>(seed, count, fieldsize, svg, level);
+ test_all<double, true, true>(seed, count, field_size, svg, level, form != "box");
 
 #if defined(HAVE_TTMATH)
         // test_all<ttmath_big, true, true>(seed, count, max, svg, level);

Modified: trunk/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.vcproj
==============================================================================
--- trunk/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.vcproj (original)
+++ trunk/libs/geometry/test/algorithms/overlay/robustness/recursive_polygons.vcproj 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -42,7 +42,7 @@
                                 Name="VCCLCompilerTool"
                                 Optimization="0"
                                 AdditionalIncludeDirectories="../../../../../..;../../..;."
- PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;TEST_WITH_SVG"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;TEST_WITH_SVG;BOOST_ALL_NO_LIB"
                                 BasicRuntimeChecks="3"
                                 RuntimeLibrary="1"
                                 UsePrecompiledHeader="0"
@@ -118,7 +118,7 @@
                         <Tool
                                 Name="VCCLCompilerTool"
                                 AdditionalIncludeDirectories="../../../../../..;../../..;."
- PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;BOOST_ALL_NO_LIB"
                                 RuntimeLibrary="0"
                                 UsePrecompiledHeader="0"
                                 WarningLevel="3"
@@ -169,6 +169,50 @@
         <References>
         </References>
         <Files>
+ <Filter
+ Name="program options"
+ >
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\cmdline.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\config_file.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\convert.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\options_description.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\parsers.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\positional_options.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\split.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\utf8_codecvt_facet.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\value_semantic.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\..\..\program_options\src\variables_map.cpp"
+ >
+ </File>
+ </Filter>
                 <File
                         RelativePath=".\recursive_polygons.cpp"
>

Modified: trunk/libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp
==============================================================================
--- trunk/libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp (original)
+++ trunk/libs/geometry/test/algorithms/overlay/robustness/test_overlay_p_q.hpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -11,7 +11,7 @@
 #include <fstream>
 #include <iomanip>
 
-// #define BOOST_GEOMETRY_ROBUSTNESS_USE_DIFFERENCE
+//#define BOOST_GEOMETRY_ROBUSTNESS_USE_DIFFERENCE
 
 
 // For mixing int/float
@@ -48,7 +48,7 @@
     CalculationType area_q = bg::area(q);
 
     bg::intersection(p, q, out_i);
- CalculationType area_i = bg::area(out_i);
+ CalculationType area_i = abs(bg::area(out_i)); // TEMP abs call, TODO solve this
 
     bg::union_(p, q, out_u);
     CalculationType area_u = bg::area(out_u);

Modified: trunk/libs/geometry/test/algorithms/test_difference.hpp
==============================================================================
--- trunk/libs/geometry/test/algorithms/test_difference.hpp (original)
+++ trunk/libs/geometry/test/algorithms/test_difference.hpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -16,6 +16,7 @@
 
 #include <boost/range/algorithm/copy.hpp>
 
+#include <boost/geometry/algorithms/correct.hpp>
 #include <boost/geometry/algorithms/difference.hpp>
 #include <boost/geometry/algorithms/sym_difference.hpp>
 #include <boost/geometry/multi/algorithms/difference.hpp>
@@ -176,6 +177,19 @@
 
         double percentage = 0.0001)
 {
+#ifdef BOOST_GEOMETRY_CHECK_WITH_SQLSERVER
+ std::cout
+ << "-- " << caseid << std::endl
+ << "with qu as (" << std::endl
+ << "select geometry::STGeomFromText('" << wkt1 << "',0) as p," << std::endl
+ << "geometry::STGeomFromText('" << wkt2 << "',0) as q)" << std::endl
+ << "select " << std::endl
+ << " p.STDifference(q).STNumGeometries() as cnt1,p.STDifference(q).STNumPoints() as pcnt1,p.STDifference(q).STArea() as area1," << std::endl
+ << " q.STDifference(p).STNumGeometries() as cnt2,q.STDifference(p).STNumPoints() as pcnt2,q.STDifference(p).STArea() as area2," << std::endl
+ << " p.STDifference(q) as d1,q.STDifference(p) as d2 from qu" << std::endl << std::endl;
+#endif
+
+
     G1 g1;
     bg::read_wkt(wkt1, g1);
 
@@ -200,6 +214,7 @@
         expected_area1 + expected_area2,
         percentage, true);
 
+
 #ifdef BOOST_GEOMETRY_CHECK_WITH_POSTGIS
     std::cout
         << (counter > 0 ? "union " : "")

Modified: trunk/libs/geometry/test/algorithms/test_overlay.hpp
==============================================================================
--- trunk/libs/geometry/test/algorithms/test_overlay.hpp (original)
+++ trunk/libs/geometry/test/algorithms/test_overlay.hpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -23,6 +23,7 @@
 static std::string example_star =
     "POLYGON((4.0 -0.5 , 3.5 1.0 , 2.0 1.5 , 3.5 2.0 , 4.0 3.5 , 4.5 2.0 , 6.0 1.5 , 4.5 1.0 , 4.0 -0.5))";
 
+static std::string polygon_empty = "POLYGON EMPTY";
 
 // 2. Alphabetically ordered testcase pairs
 

Modified: trunk/libs/geometry/test/algorithms/union.cpp
==============================================================================
--- trunk/libs/geometry/test/algorithms/union.cpp (original)
+++ trunk/libs/geometry/test/algorithms/union.cpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -21,6 +21,17 @@
 template <typename Ring, typename Polygon>
 void test_areal()
 {
+ test_one<Polygon, Polygon, Polygon>("simplex_normal",
+ simplex_normal[0], simplex_normal[1],
+ 1, 0, 13, 11.526367);
+
+ test_one<Polygon, Polygon, Polygon>("simplex_with_empty_1",
+ simplex_normal[0], polygon_empty,
+ 1, 0, 4, 8.0);
+ test_one<Polygon, Polygon, Polygon>("simplex_with_empty_2",
+ polygon_empty, simplex_normal[0],
+ 1, 0, 4, 8.0);
+
     test_one<Polygon, Polygon, Polygon>("star_ring", example_star, example_ring,
         1, 0, 23, 5.67017141);
 
@@ -122,10 +133,6 @@
         crossed[0], crossed[1],
         1, 3, 17, 23.5); // Area from SQL Server - was somehow wrong before
 
- test_one<Polygon, Polygon, Polygon>("simplex_normal",
- simplex_normal[0], simplex_normal[1],
- 1, 0, 13, 11.526367);
-
     test_one<Polygon, Polygon, Polygon>("fitting",
         fitting[0], fitting[1],
         1, 0, 5, 25);

Modified: trunk/libs/geometry/test/multi/algorithms/Jamfile.v2
==============================================================================
--- trunk/libs/geometry/test/multi/algorithms/Jamfile.v2 (original)
+++ trunk/libs/geometry/test/multi/algorithms/Jamfile.v2 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -12,6 +12,7 @@
     [ run multi_centroid.cpp ]
     [ run multi_convex_hull.cpp ]
     [ run multi_correct.cpp ]
+ [ run multi_difference.cpp ]
     [ run multi_envelope.cpp ]
     [ run multi_equals.cpp ]
     [ run multi_for_each.cpp ]
@@ -23,6 +24,7 @@
     [ run multi_perimeter.cpp ]
     [ run multi_reverse.cpp ]
     [ run multi_simplify.cpp ]
+ [ run multi_transform.cpp ]
     [ run multi_union.cpp ]
     [ run multi_unique.cpp ]
     [ run multi_within.cpp ]

Added: trunk/libs/geometry/test/multi/algorithms/multi_difference.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/test/multi/algorithms/multi_difference.cpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -0,0 +1,127 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library) test file
+//
+// Copyright Barend Gehrels 2010, Geodan, 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 <iostream>
+#include <string>
+
+// #define BOOST_GEOMETRY_DEBUG_ASSEMBLE
+#define BOOST_GEOMETRY_CHECK_WITH_SQLSERVER
+
+#include <algorithms/test_difference.hpp>
+#include <algorithms/test_overlay.hpp>
+#include <multi/algorithms/overlay/multi_overlay_cases.hpp>
+
+#include <boost/geometry/multi/algorithms/correct.hpp>
+#include <boost/geometry/multi/algorithms/difference.hpp>
+#include <boost/geometry/multi/algorithms/within.hpp> // only for testing #77
+
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#include <boost/geometry/extensions/gis/io/wkt/read_wkt_multi.hpp>
+
+template <typename Ring, typename Polygon, typename MultiPolygon>
+void test_areal()
+{
+ test_one<Polygon, MultiPolygon, MultiPolygon>("simplex_multi",
+ case_multi_simplex[0], case_multi_simplex[1],
+ 5, 12, 5.58, 4, 12, 2.58);
+
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_multi_no_ip",
+ case_multi_no_ip[0], case_multi_no_ip[1],
+ 2, 12, 24.0, 2, 12, 34.0);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_multi_2",
+ case_multi_2[0], case_multi_2[1],
+ 2, 15, 19.6, 2, 13, 33.6);
+
+ test_one<Polygon, MultiPolygon, Polygon>("simplex_multi_mp_p",
+ case_multi_simplex[0], case_single_simplex,
+ 5, 22, 5.58, 4, 17, 2.58);
+ test_one<Polygon, Ring, MultiPolygon>("simplex_multi_r_mp",
+ case_single_simplex, case_multi_simplex[0],
+ 4, 17, 2.58, 5, 22, 5.58);
+ test_one<Ring, MultiPolygon, Polygon>("simplex_multi_mp_r",
+ case_multi_simplex[0], case_single_simplex,
+ 5, 22, 5.58, 4, 17, 2.58);
+
+ // Constructed cases for multi/touch/equal/etc
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_61_multi",
+ case_61_multi[0], case_61_multi[1],
+ 2, 10, 2, 2, 10, 2);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_62_multi",
+ case_62_multi[0], case_62_multi[1],
+ 0, 0, 0, 1, 5, 1);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_63_multi",
+ case_63_multi[0], case_63_multi[1],
+ 0, 0, 0, 1, 5, 1);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_64_multi",
+ case_64_multi[0], case_64_multi[1],
+ 1, 1, 1, 1, 1, 1);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_65_multi",
+ case_65_multi[0], case_65_multi[1],
+ 0, 0, 0, 2, 10, 3);
+ /* TODO: fix
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_72_multi",
+ case_72_multi[0], case_72_multi[1],
+ 3, 13, 1.65, 3, 17, 6.15);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_77_multi",
+ case_77_multi[0], case_77_multi[1],
+ 6, 31, 7, 6, 36, 13);
+ */
+
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_78_multi",
+ case_78_multi[0], case_78_multi[1],
+ 1, 1, 1.0, 1, 1, 1.0);
+
+ /* TODO: fix
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_101_multi",
+ case_101_multi[0], case_101_multi[1],
+ 5, 23, 4.75, 5, 40, 12.75);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_102_multi",
+ case_102_multi[0], case_102_multi[1],
+ 2, 8, 0.75, 6, 25, 3.75);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_107_multi",
+ case_107_multi[0], case_107_multi[1],
+ 2, 11, 2.25, 3, 14, 3.0);
+ */
+ /*
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_1",
+ case_recursive_boxes_1[0], case_recursive_boxes_1[1],
+ 1, 1, 1, 1, 1, 1);
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_2",
+ case_recursive_boxes_2[0], case_recursive_boxes_2[1],
+ 1, 1, 1, 1, 1, 1);
+
+ test_one<Polygon, MultiPolygon, MultiPolygon>("case_recursive_boxes_3",
+ case_recursive_boxes_3[0], case_recursive_boxes_3[1],
+ 1, 1, 1, 1, 1, 1);
+*/
+}
+
+
+template <typename P>
+void test_all()
+{
+ typedef bg::model::box<P> box;
+ typedef bg::model::ring<P> ring;
+ typedef bg::model::polygon<P> polygon;
+ typedef bg::model::multi_polygon<polygon> multi_polygon;
+ test_areal<ring, polygon, multi_polygon>();
+}
+
+
+int test_main(int, char* [])
+{
+ test_all<bg::model::d2::point_xy<double> >();
+
+#ifdef HAVE_TTMATH
+ //test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+ return 0;
+}

Added: trunk/libs/geometry/test/multi/algorithms/multi_difference.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/test/multi/algorithms/multi_difference.vcproj 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="multi_difference"
+ ProjectGUID="{7F85B87A-48A6-47BD-A08C-AB12AEA56582}"
+ RootNamespace="multi_difference"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\multi_difference"
+ 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="../../../../..;../..;."
+ 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)\multi_difference"
+ 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="../../../../..;../..;."
+ 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=".\multi_difference.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>

Added: trunk/libs/geometry/test/multi/algorithms/multi_transform.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/test/multi/algorithms/multi_transform.cpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -0,0 +1,90 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library) test file
+//
+// Copyright Barend Gehrels 2007-2009, Geodan, Amsterdam, the Netherlands
+// Copyright Bruno Lalande 2008, 2009
+// 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 <iostream>
+#include <sstream>
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/algorithms/transform.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+#include <boost/geometry/geometries/geometries.hpp>
+
+#include <boost/geometry/multi/algorithms/transform.hpp>
+
+#include <boost/geometry/multi/geometries/multi_point.hpp>
+#include <boost/geometry/multi/geometries/multi_linestring.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#include <boost/geometry/extensions/gis/io/wkt/wkt.hpp>
+#include <boost/geometry/extensions/gis/io/wkt/read_wkt_multi.hpp>
+
+
+// This test is a little different from transform.cpp test.
+// This test explicitly tests all geometries, including multi*
+// while the transform.cpp tests various strategies.
+
+template <typename Geometry>
+void test_transform(std::string const& wkt, std::string const& expected)
+{
+ typedef typename bg::point_type<Geometry>::type point_type;
+
+ Geometry geometry_in, geometry_out;
+ bg::read_wkt(wkt, geometry_in);
+ bg::transform(geometry_in, geometry_out,
+ bg::strategy::transform::scale_transformer<point_type>(2, 2));
+ std::ostringstream detected;
+ detected << bg::wkt(geometry_out);
+ BOOST_CHECK_EQUAL(detected.str(), expected);
+}
+
+
+template <typename T>
+void test_all()
+{
+ typedef bg::model::d2::point_xy<T> P;
+
+ test_transform<P>(
+ "POINT(1 1)",
+ "POINT(2 2)");
+ test_transform<bg::model::linestring<P> >(
+ "LINESTRING(1 1,2 2)",
+ "LINESTRING(2 2,4 4)");
+ test_transform<bg::model::segment<P> >(
+ "LINESTRING(1 1,2 2)",
+ "LINESTRING(2 2,4 4)");
+ test_transform<bg::model::ring<P> >(
+ "POLYGON((0 0,0 1,1 0,0 0))",
+ "POLYGON((0 0,0 2,2 0,0 0))");
+ test_transform<bg::model::polygon<P> >(
+ "POLYGON((0 0,0 1,1 0,0 0))",
+ "POLYGON((0 0,0 2,2 0,0 0))");
+ test_transform<bg::model::box<P> >(
+ "POLYGON((0 0,0 1,1 1,1 0,0 0))",
+ "POLYGON((0 0,0 2,2 2,2 0,0 0))");
+ test_transform<bg::model::multi_point<P> >(
+ "MULTIPOINT((1 1),(2 2))",
+ "MULTIPOINT((2 2),(4 4))");
+ test_transform<bg::model::multi_linestring<bg::model::linestring<P> > >(
+ "MULTILINESTRING((1 1,2 2))",
+ "MULTILINESTRING((2 2,4 4))");
+ test_transform<bg::model::multi_polygon<bg::model::polygon<P> > >(
+ "MULTIPOLYGON(((0 0,0 1,1 0,0 0)))",
+ "MULTIPOLYGON(((0 0,0 2,2 0,0 0)))");
+}
+
+
+int test_main(int, char* [])
+{
+ test_all<double>();
+
+#ifdef HAVE_TTMATH
+ test_all<ttmath_big>();
+#endif
+ return 0;
+}

Added: trunk/libs/geometry/test/multi/algorithms/multi_transform.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/test/multi/algorithms/multi_transform.vcproj 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="multi_transform"
+ ProjectGUID="{64985954-0A74-46F5-908F-865E905C3414}"
+ RootNamespace="multi_transform"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)\multi_transform"
+ 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="../../../../..;../.."
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ 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)\multi_transform"
+ 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="../../../../..;../.."
+ 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=".\multi_transform.cpp"
+ >
+ </File>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>

Modified: trunk/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp
==============================================================================
--- trunk/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp (original)
+++ trunk/libs/geometry/test/multi/algorithms/overlay/multi_overlay_cases.hpp 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -341,7 +341,7 @@
 {
     // For CCW polygon reports a iu/iu problem.
     "MULTIPOLYGON(((6 8,7 9,7 7,8 7,7 6,6 6,6 8)),((6.5 9.5,7 10,7 9,6 9,6 10,6.5 9.5)))",
- "MULTIPOLYGON(((5 7,6 8,6 10,7 9,8 10,8 8,7 8,6 7,6 6,5 6)))"
+ "MULTIPOLYGON(((5 7,6 8,6 10,7 9,8 10,8 8,7 8,6 7,6 6,5 7)))"
 };
 
 

Modified: trunk/libs/geometry/test/multi/multi_tests.sln
==============================================================================
--- trunk/libs/geometry/test/multi/multi_tests.sln (original)
+++ trunk/libs/geometry/test/multi/multi_tests.sln 2011-03-04 16:43:58 EST (Fri, 04 Mar 2011)
@@ -38,6 +38,10 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_num_interior_rings", "algorithms\multi_num_interior_rings.vcproj", "{3F8E4B3A-43D5-49ED-89F6-C6D1CF609B02}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_difference", "algorithms\multi_difference.vcproj", "{7F85B87A-48A6-47BD-A08C-AB12AEA56582}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_transform", "algorithms\multi_transform.vcproj", "{64985954-0A74-46F5-908F-865E905C3414}"
+EndProject
 Global
         GlobalSection(SolutionConfigurationPlatforms) = preSolution
                 Debug|Win32 = Debug|Win32
@@ -120,6 +124,14 @@
                 {3F8E4B3A-43D5-49ED-89F6-C6D1CF609B02}.Debug|Win32.Build.0 = Debug|Win32
                 {3F8E4B3A-43D5-49ED-89F6-C6D1CF609B02}.Release|Win32.ActiveCfg = Release|Win32
                 {3F8E4B3A-43D5-49ED-89F6-C6D1CF609B02}.Release|Win32.Build.0 = Release|Win32
+ {7F85B87A-48A6-47BD-A08C-AB12AEA56582}.Debug|Win32.ActiveCfg = Debug|Win32
+ {7F85B87A-48A6-47BD-A08C-AB12AEA56582}.Debug|Win32.Build.0 = Debug|Win32
+ {7F85B87A-48A6-47BD-A08C-AB12AEA56582}.Release|Win32.ActiveCfg = Release|Win32
+ {7F85B87A-48A6-47BD-A08C-AB12AEA56582}.Release|Win32.Build.0 = Release|Win32
+ {64985954-0A74-46F5-908F-865E905C3414}.Debug|Win32.ActiveCfg = Debug|Win32
+ {64985954-0A74-46F5-908F-865E905C3414}.Debug|Win32.Build.0 = Debug|Win32
+ {64985954-0A74-46F5-908F-865E905C3414}.Release|Win32.ActiveCfg = Release|Win32
+ {64985954-0A74-46F5-908F-865E905C3414}.Release|Win32.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(SolutionProperties) = preSolution
                 HideSolutionNode = FALSE


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk