Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r73348 - trunk/libs/polygon/test
From: lucanus.j.simonson_at_[hidden]
Date: 2011-07-25 01:46:23


Author: ljsimons
Date: 2011-07-25 01:46:21 EDT (Mon, 25 Jul 2011)
New Revision: 73348
URL: http://svn.boost.org/trac/boost/changeset/73348

Log:
adding directed line segment concept
Text files modified:
   trunk/libs/polygon/test/gtl_boost_unit_test.cpp | 80 ++++++++++++++++++++++++++++++++++++++++
   1 files changed, 80 insertions(+), 0 deletions(-)

Modified: trunk/libs/polygon/test/gtl_boost_unit_test.cpp
==============================================================================
--- trunk/libs/polygon/test/gtl_boost_unit_test.cpp (original)
+++ trunk/libs/polygon/test/gtl_boost_unit_test.cpp 2011-07-25 01:46:21 EDT (Mon, 25 Jul 2011)
@@ -12,6 +12,13 @@
 #include <time.h>
 #include <stdlib.h>
 
+void assert_s(bool c, std::string msg) {
+ if(!c) {
+ std::cout << msg << std::endl;
+ exit( 1);
+ }
+}
+
 namespace boost { namespace polygon{
     void addpoly(polygon_45_set_data<int>& pset,
                  int* pts, int numpts) {
@@ -186,6 +193,11 @@
   {
     return o << r.get(HORIZONTAL) << ' ' << r.get(VERTICAL);
   }
+ template <class T>
+ std::ostream& operator << (std::ostream& o, const directed_line_segment_data<T>& r)
+ {
+ return o << r.get(LOW) << ' ' << r.get(HIGH);
+ }
 
 
   template <typename T>
@@ -3634,6 +3646,74 @@
       }
     }
   }
+ {
+ using namespace gtl;
+ typedef point_data<int> Point;
+ typedef directed_line_segment_data<int> Dls;
+ Point pt1(0, 0);
+ Point pt2(10, 10);
+ Point pt3(20, 20);
+ Point pt4(20, 0);
+ Dls dls1(pt1, pt2);
+ Dls dls2(pt1, pt3);
+ Dls dls3(pt1, pt4);
+ Dls dls4(pt2, pt1);
+ bool b1 = equivalence(dls1, dls1);
+ bool b2 = equivalence(dls1, dls2);
+ bool b3 = equivalence(dls1, dls3);
+ bool b4 = equivalence(dls1, dls4);
+ if(!b1 || b2 || b3 || b4) {
+ std::cout << "fail1\n";
+ return 1;
+ }
+ low(dls1, pt1);
+ if(!equivalence(low(dls1), pt1)) {
+ std::cout << "fail2\n";
+ return 1;
+ }
+ high(dls1, pt2);
+ assert_s(equivalence(high(dls1), pt2), "fail3");
+ assign(dls1, dls4);
+ assert_s(equivalence(dls1, dls4), "fail4");
+ assert_s(!contains(dls1, dls2), "fail5");
+ assert_s(contains(dls2, dls1), "fail5");
+ assert_s(!contains(dls2, dls1, false), "fail6");
+ assert_s(center(dls1) == Point(5, 5), "center");
+ assert_s(length(dls3) == 20, "length");
+ scale_up(dls3, 10);
+ assert_s(length(dls3) == 200, "length2");
+ scale_down(dls3, 10);
+ assert_s(length(dls3) == 20, "length3");
+ scale(dls3, anisotropic_scale_factor<double>(1.5, 1.5, 1.5));
+ assert_s(length(dls3) == 30, "length4");
+ axis_transformation atr(axis_transformation::WS);
+ transform(dls3, atr);
+ assert_s(equivalence(high(dls3), Point(-30, 0)), "transform");
+ move(dls3, HORIZONTAL, 30);
+ assert_s(equivalence(high(dls3), pt1), "move");
+ convolve(dls3, pt2);
+ assert_s(equivalence(high(dls3), pt2), "convolve");
+ deconvolve(dls3, pt2);
+ assert_s(equivalence(high(dls3), pt1), "deconvolve");
+ assert_s(euclidean_distance(dls3, pt1) == 0.0, "distance1");
+ assert_s(euclidean_distance(dls3, pt2) == 10.0, "distance2");
+ std::cout << euclidean_distance(dls3, Point(5, 5)) << std::endl;
+ std::cout << dls1 << std::endl;
+ std::cout << euclidean_distance(dls1, Point(5, 5)) << std::endl;
+ std::cout << euclidean_distance(dls1, Point(15, 15)) << std::endl;
+ std::cout << euclidean_distance(dls1, Point(5, 6)) << std::endl;
+ std::cout << euclidean_distance(dls1, Point(5, 3)) << std::endl;
+ std::cout << euclidean_distance(dls1, dls3) << std::endl;
+ std::cout << euclidean_distance(dls1, directed_line_segment_data<int>(Point(2, 0), Point(3, 0))) << std::endl;
+ assert_s(intersects(dls1, dls3), "intersects1");
+ assert_s(!intersects(dls1, directed_line_segment_data<int>(Point(2, 0), Point(3, 0))), "intersects2");
+ assert_s(boundaries_intersect(dls1, dls2), "bi");
+ assert_s(abuts(dls1, dls2), "abuts");
+ Point p;
+ bool ir = intersection(p, dls1, dls2);
+ std::cout << ir << " " << p << std::endl;
+ }
+
   std::cout << "ALL TESTS COMPLETE\n";
   return 0;
 }


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