$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r78691 - in trunk/libs/geometry/test: algorithms multi multi/algorithms
From: barend.gehrels_at_[hidden]
Date: 2012-05-27 13:47:29
Author: barendgehrels
Date: 2012-05-27 13:47:28 EDT (Sun, 27 May 2012)
New Revision: 78691
URL: http://svn.boost.org/trac/boost/changeset/78691
Log:
[geometry] added touch - unit tests
Added:
   trunk/libs/geometry/test/algorithms/test_touches.hpp   (contents, props changed)
   trunk/libs/geometry/test/algorithms/touches.cpp   (contents, props changed)
   trunk/libs/geometry/test/algorithms/touches.vcproj   (contents, props changed)
   trunk/libs/geometry/test/multi/algorithms/multi_touches.cpp   (contents, props changed)
   trunk/libs/geometry/test/multi/algorithms/multi_touches.vcproj   (contents, props changed)
Text files modified: 
   trunk/libs/geometry/test/algorithms/Jamfile.v2           |     1 +                                       
   trunk/libs/geometry/test/algorithms/algorithms_tests.sln |     6 ++++++                                  
   trunk/libs/geometry/test/multi/algorithms/Jamfile.v2     |     1 +                                       
   trunk/libs/geometry/test/multi/multi_tests.sln           |     6 ++++++                                  
   4 files changed, 14 insertions(+), 0 deletions(-)
Modified: trunk/libs/geometry/test/algorithms/Jamfile.v2
==============================================================================
--- trunk/libs/geometry/test/algorithms/Jamfile.v2	(original)
+++ trunk/libs/geometry/test/algorithms/Jamfile.v2	2012-05-27 13:47:28 EDT (Sun, 27 May 2012)
@@ -35,6 +35,7 @@
     [ run perimeter.cpp ]
     [ run reverse.cpp ]
     [ run simplify.cpp ]
+    [ run touches.cpp ]
     [ run transform.cpp ]
     [ run union.cpp ]
     [ run unique.cpp ]
Modified: trunk/libs/geometry/test/algorithms/algorithms_tests.sln
==============================================================================
--- trunk/libs/geometry/test/algorithms/algorithms_tests.sln	(original)
+++ trunk/libs/geometry/test/algorithms/algorithms_tests.sln	2012-05-27 13:47:28 EDT (Sun, 27 May 2012)
@@ -58,6 +58,8 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "covered_by", "covered_by.vcproj", "{5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "touches", "touches.vcproj", "{8359726E-9F03-4300-8F63-1FEAC84251D0}"
+EndProject
 Global
         GlobalSection(SolutionConfigurationPlatforms) = preSolution
                 Debug|Win32 = Debug|Win32
@@ -180,6 +182,10 @@
                 {5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}.Debug|Win32.Build.0 = Debug|Win32
                 {5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}.Release|Win32.ActiveCfg = Release|Win32
                 {5ABF0B56-F9F1-4D93-B15A-E3972F45D97B}.Release|Win32.Build.0 = Release|Win32
+		{8359726E-9F03-4300-8F63-1FEAC84251D0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8359726E-9F03-4300-8F63-1FEAC84251D0}.Debug|Win32.Build.0 = Debug|Win32
+		{8359726E-9F03-4300-8F63-1FEAC84251D0}.Release|Win32.ActiveCfg = Release|Win32
+		{8359726E-9F03-4300-8F63-1FEAC84251D0}.Release|Win32.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(SolutionProperties) = preSolution
                 HideSolutionNode = FALSE
Added: trunk/libs/geometry/test/algorithms/test_touches.hpp
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/test/algorithms/test_touches.hpp	2012-05-27 13:47:28 EDT (Sun, 27 May 2012)
@@ -0,0 +1,61 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library) 
+// Unit Test
+
+// Copyright (c) 2007-2012 Barend Gehrels, 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)
+
+#ifndef BOOST_GEOMETRY_TEST_TOUCHES_HPP
+#define BOOST_GEOMETRY_TEST_TOUCHES_HPP
+
+
+#include <geometry_test_common.hpp>
+
+#include <boost/geometry/core/ring_type.hpp>
+#include <boost/geometry/algorithms/touches.hpp>
+#include <boost/geometry/strategies/strategies.hpp>
+#include <boost/geometry/geometries/ring.hpp>
+#include <boost/geometry/geometries/polygon.hpp>
+
+#include <boost/geometry/io/wkt/read.hpp>
+
+
+template <typename Geometry1, typename Geometry2>
+void test_touches(std::string const& wkt1,
+        std::string const& wkt2, bool expected)
+{
+    Geometry1 geometry1;
+    Geometry2 geometry2;
+
+    bg::read_wkt(wkt1, geometry1);
+    bg::read_wkt(wkt2, geometry2);
+
+    bool detected = bg::touches(geometry1, geometry2);
+
+    BOOST_CHECK_MESSAGE(detected == expected,
+        "touches: " << wkt1
+        << " with " << wkt2
+        << " -> Expected: " << expected
+        << " detected: " << detected);
+}
+
+
+template <typename Geometry>
+void test_self_touches(std::string const& wkt, bool expected)
+{
+    Geometry geometry;
+
+    bg::read_wkt(wkt, geometry);
+
+    bool detected = bg::touches(geometry);
+
+    BOOST_CHECK_MESSAGE(detected == expected,
+        "touches: " << wkt
+        << " -> Expected: " << expected
+        << " detected: " << detected);
+}
+
+
+
+#endif
Added: trunk/libs/geometry/test/algorithms/touches.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/test/algorithms/touches.cpp	2012-05-27 13:47:28 EDT (Sun, 27 May 2012)
@@ -0,0 +1,154 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+//
+// Copyright (c) 2012 Barend Gehrels, 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 <algorithms/test_touches.hpp>
+
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+
+
+
+template <typename P>
+void test_all()
+{
+    typedef bg::model::polygon<P> polygon;
+
+    // Just a normal polygon
+    test_self_touches<polygon>("POLYGON((0 0,0 4,1.5 2.5,2.5 1.5,4 0,0 0))", false);
+
+    // Self intersecting
+    test_self_touches<polygon>("POLYGON((1 2,1 1,2 1,2 2.25,3 2.25,3 0,0 0,0 3,3 3,2.75 2,1 2))", false);
+
+    // Self touching at a point
+    test_self_touches<polygon>("POLYGON((0 0,0 3,2 3,2 2,1 2,1 1,2 1,2 2,3 2,3 0,0 0))", true);
+
+    // Self touching at a segment
+    test_self_touches<polygon>("POLYGON((0 0,0 3,2 3,2 2,1 2,1 1,2 1,2 2.5,3 2.5,3 0,0 0))", true);
+
+    // Touching at corner
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 0,0 0))", 
+            "POLYGON((100 100,100 200,200 200, 200 100,100 100))",
+            true
+        );
+
+    // Intersecting at corner
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,101 101,100 0,0 0))", 
+            "POLYGON((100 100,100 200,200 200, 200 100,100 100))",
+            false
+        );
+
+    // Touching at side (interior of a segment)
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 0,0 0))", 
+            "POLYGON((200 0,100 50,200 100,200 0))",
+            true
+        );
+
+    // Touching at side (partly collinear)
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 0,0 0))", 
+            "POLYGON((200 20,100 20,100 80,200 80,200 20))",
+            true
+        );
+
+    // Completely equal
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 0,0 0))", 
+            "POLYGON((0 0,0 100,100 100,100 0,0 0))",
+            false
+        );
+
+    // Spatially equal
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 0,0 0))", 
+            "POLYGON((0 0,0 100,100 100,100 80,100 20,100 0,0 0))",
+            false
+        );
+
+    // Spatially equal (without equal segments)
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 0,0 0))", 
+            "POLYGON((0 0,0 50,0 100,50 100,100 100,100 50,100 0,50 0,0 0))",
+            false
+        );
+    
+
+    // Touching at side (opposite equal)
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 0,0 0))", 
+            "POLYGON((200 0,100 0,100 100,200 100,200 0))",
+            true
+        );
+
+    // Touching at side (opposite equal - but with real "equal" turning point)
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 80,100 20,100 0,0 0))", 
+            "POLYGON((200 0,100 0,100 20,100 80,100 100,200 100,200 0))",
+            true
+        );
+    // First partly collinear to side, than overlapping
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 0,0 0))", 
+            "POLYGON((200 20,100 20,100 50,50 50,50 80,100 80,200 80,200 20))",
+            false
+        );
+
+    // Touching interior (= no touch)
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 0,0 0))", 
+            "POLYGON((20 20,20 80,100 50,20 20))",
+            false
+        );
+
+    // Fitting in hole
+    test_touches<polygon, polygon>
+        (
+            "POLYGON((0 0,0 100,100 100,100 0,0 0),(40 40,60 40,60 60,40 60,40 40))", 
+            "POLYGON((40 40,40 60,60 60,60 40,40 40))",
+            true
+        );
+
+}
+
+
+
+
+int test_main( int , char* [] )
+{
+    test_all<bg::model::d2::point_xy<double> >();
+
+
+#if defined(HAVE_TTMATH)
+    test_all<bg::model::d2::point_xy<ttmath_big> >();
+#endif
+
+    return 0;
+}
+
+/*
+with viewy as
+(
+select geometry::STGeomFromText('POLYGON((0 0,0 100,100 100,100 0,0 0))',0) as p
+	, geometry::STGeomFromText('POLYGON((200 0,100 50,200 100,200 0))',0) as q
+)
+-- select p from viewy union all select q from viewy
+select p.STTouches(q) from viewy
+*/
\ No newline at end of file
Added: trunk/libs/geometry/test/algorithms/touches.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/test/algorithms/touches.vcproj	2012-05-27 13:47:28 EDT (Sun, 27 May 2012)
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="touches"
+	ProjectGUID="{8359726E-9F03-4300-8F63-1FEAC84251D0}"
+	RootNamespace="touches"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)\touches"
+			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;NONDLL;_CRT_SECURE_NO_WARNINGS"
+				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)\touches"
+			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;NONDLL;_CRT_SECURE_NO_WARNINGS"
+				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=".\touches.cpp"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
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	2012-05-27 13:47:28 EDT (Sun, 27 May 2012)
@@ -30,6 +30,7 @@
     [ run multi_perimeter.cpp ]
     [ run multi_reverse.cpp ]
     [ run multi_simplify.cpp ]
+    [ run multi_touches.cpp ]
     [ run multi_transform.cpp ]
     [ run multi_union.cpp ]
     [ run multi_unique.cpp ]
Added: trunk/libs/geometry/test/multi/algorithms/multi_touches.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/test/multi/algorithms/multi_touches.cpp	2012-05-27 13:47:28 EDT (Sun, 27 May 2012)
@@ -0,0 +1,80 @@
+// Boost.Geometry (aka GGL, Generic Geometry Library)
+//
+// Copyright (c) 2010-2012 Barend Gehrels, 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 <algorithms/test_touches.hpp>
+
+#include <boost/geometry/multi/algorithms/area.hpp>
+#include <boost/geometry/multi/algorithms/num_geometries.hpp>
+#include <boost/geometry/multi/algorithms/within.hpp>
+#include <boost/geometry/multi/algorithms/detail/sections/range_by_section.hpp>
+#include <boost/geometry/multi/algorithms/detail/sections/sectionalize.hpp>
+#include <boost/geometry/multi/algorithms/detail/for_each_range.hpp>
+#include <boost/geometry/multi/core/closure.hpp>
+#include <boost/geometry/multi/core/geometry_id.hpp>
+#include <boost/geometry/multi/core/ring_type.hpp>
+#include <boost/geometry/multi/views/detail/range_type.hpp>
+
+#include <boost/geometry/geometries/geometries.hpp>
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/multi/geometries/multi_polygon.hpp>
+
+#include <boost/geometry/multi/io/wkt/read.hpp>
+
+
+
+template <typename P>
+void test_all()
+{
+    typedef bg::model::polygon<P> polygon;
+    typedef bg::model::multi_polygon<polygon> mp;
+
+    test_self_touches<mp>("MULTIPOLYGON(((0 0,0 100,100 100,100 0,0 0)))",
+            false);
+
+    // Exactly equal
+    test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 100,100 100,100 0,0 0)))",
+            "MULTIPOLYGON(((0 0,0 100,100 100,100 0,0 0)))",
+            false);
+
+    // Spatially equal
+    test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 100,100 100,100 0,0 0)))",
+            "MULTIPOLYGON(((0 0,0 100,100 100,100 80,100 20,100 0,0 0)))",
+            false);
+
+    // One exactly equal, another pair touching
+    test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+            "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((30 10,30 20,40 20,40 10,30 10)))",
+            false);
+
+    // One spatially equal (without equal segments), another pair touching
+    test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 5,0 10,5 10,10 10,10 5,10 0,5 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+            "MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((30 10,30 20,40 20,40 10,30 10)))",
+            false);
+
+    // Alternate touches
+    test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+            "MULTIPOLYGON(((10 10,10 20,20 20,20 10,10 10)),((30 10,30 20,40 20,40 10,30 10)))",
+            true);
+
+    // Touch plus inside
+    // TODO fix this
+    test_touches<mp, mp>("MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((20 0,20 10,30 10,30 0,20 0)))",
+            "MULTIPOLYGON(((10 10,10 20,20 20,20 10,10 10)),((22 2,28 2,28 8,22 8,22 2)))",
+            false);
+}
+
+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_touches.vcproj
==============================================================================
--- (empty file)
+++ trunk/libs/geometry/test/multi/algorithms/multi_touches.vcproj	2012-05-27 13:47:28 EDT (Sun, 27 May 2012)
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8,00"
+	Name="multi_touches"
+	ProjectGUID="{108173B8-B6F4-4366-8018-2BF282ED4881}"
+	RootNamespace="multi_touches"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)\multi_touches"
+			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_touches"
+			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_touches.cpp"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
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	2012-05-27 13:47:28 EDT (Sun, 27 May 2012)
@@ -48,6 +48,8 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_disjoint", "algorithms\multi_disjoint.vcproj", "{5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "multi_touches", "algorithms\multi_touches.vcproj", "{108173B8-B6F4-4366-8018-2BF282ED4881}"
+EndProject
 Global
         GlobalSection(SolutionConfigurationPlatforms) = preSolution
                 Debug|Win32 = Debug|Win32
@@ -150,6 +152,10 @@
                 {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Debug|Win32.Build.0 = Debug|Win32
                 {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Release|Win32.ActiveCfg = Release|Win32
                 {5DEA6558-9DF7-42D4-AF10-4D6D8BB7EAD1}.Release|Win32.Build.0 = Release|Win32
+		{108173B8-B6F4-4366-8018-2BF282ED4881}.Debug|Win32.ActiveCfg = Debug|Win32
+		{108173B8-B6F4-4366-8018-2BF282ED4881}.Debug|Win32.Build.0 = Debug|Win32
+		{108173B8-B6F4-4366-8018-2BF282ED4881}.Release|Win32.ActiveCfg = Release|Win32
+		{108173B8-B6F4-4366-8018-2BF282ED4881}.Release|Win32.Build.0 = Release|Win32
         EndGlobalSection
         GlobalSection(SolutionProperties) = preSolution
                 HideSolutionNode = FALSE