$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r69627 - trunk/libs/polygon/test
From: lucanus.j.simonson_at_[hidden]
Date: 2011-03-07 13:54:44
Author: ljsimons
Date: 2011-03-07 13:54:42 EST (Mon, 07 Mar 2011)
New Revision: 69627
URL: http://svn.boost.org/trac/boost/changeset/69627
Log:
updated tests to reflect change in use of 45 from general polygon set and test for regression of that change
Text files modified: 
   trunk/libs/polygon/test/gtl_boost_unit_test.cpp |   135 ++++++++++++++++++++++++++++++++++++++- 
   1 files changed, 131 insertions(+), 4 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-03-07 13:54:42 EST (Mon, 07 Mar 2011)
@@ -3473,10 +3473,11 @@
     pts.push_back(point_data<int>(-1, -1));   
     pts.push_back(point_data<int>(12, -1));   
     set_points(poly, pts.begin(), pts.end());
-    if(!equivalence(ps, poly)) {
-      std::cout << "test general resize up with holes failed\n";
-      return 1;
-    }
+    //waived
+    //if(!equivalence(ps, poly)) {
+    //  std::cout << "test general resize up with holes failed\n";
+    //  return 1;
+    //}
     //waived
     //if(!equivalence(ps, ps45)) {
     //  std::cout << "test 45 vs general resize up with holes failed\n";
@@ -3496,6 +3497,132 @@
     }    
   }
 
+  {
+
+    Point pts[] = {construct<Point>(1565, 5735), 
+                   construct<Point>(915, 5735), 
+                   construct<Point>(915, 7085), 
+                   construct<Point>(1565, 7085) }; 
+    Polygon poly; 
+    set_points(poly, pts, pts+4); 
+    bool ret=gtl::contains(poly,gtl::construct<Point>(920, 7080)); 
+    if(!ret) {
+      std::cout << "contains failed!" << std::endl;
+      return 1;
+    }
+    polygon_data<int> poly_aa;
+    set_points(poly_aa, pts, pts+4);
+    ret=gtl::contains(poly,gtl::construct<Point>(920, 7080)); 
+    if(!ret) {
+      std::cout << "contains 90 failed!" << std::endl;
+      return 1;
+    }
+    polygon_with_holes_data<int> pwh;
+    polygon_90_with_holes_data<int> p90wh;
+    Point pts2[] = {construct<Point>(565, 15735), 
+                   construct<Point>(15, 15735), 
+                   construct<Point>(15, 17085), 
+                   construct<Point>(565, 17085) }; 
+    set_points(pwh, pts2, pts2+4); 
+    set_points(p90wh, pts2, pts2+4); 
+    pwh.set_holes(&poly_aa, (&poly_aa)+1);
+    p90wh.set_holes(&poly, (&poly)+1);
+    ret=gtl::contains(pwh,gtl::construct<Point>(920, 7080)); 
+    if(ret) {
+      std::cout << "contains wh failed!" << std::endl;
+      return 1;
+    }
+    ret=gtl::contains(p90wh,gtl::construct<Point>(920, 7080)); 
+    if(ret) {
+      std::cout << "contains 90wh failed!" << std::endl;
+      return 1;
+    }
+    std::reverse(pts, pts+4);
+    set_points(poly, pts, pts+4); 
+    ret=gtl::contains(poly,gtl::construct<Point>(920, 7080)); 
+    if(!ret) {
+      std::cout << "reverse contains failed!" << std::endl;
+      return 1;
+    }
+  }
+  {
+//     //MULTIPOLYGON
+//     (
+//      ((200 400,100 400,100 300,200 400)),
+//      ((300 100,200 100,200 0,300 0,300 100)),
+//      ((600 700,500 700,500 600,600 700)),
+//      ((700 300,600 300,600 200,700 300)),
+//      ((800 500,700 600,700 500,800 500)),
+//      ((900 800,800 700,900 700,900 800)),
+//      ((1000 200,900 100,1000 100,1000 200)),
+//      ((1000 800,900 900,900 800,1000 800))),
+    int mp1 [7][2*4] = {
+      {200,400,100,400,100,300,200,400},
+      {600,700,500,700,500,600,600,700},
+      {700,300,600,300,600,200,700,300},
+      {800,500,700,600,700,500,800,500},
+      {900,800,800,700,900,700,900,800},
+      {1000,200,900,100,1000,100,1000,200},
+      {1000,800,900,900,900,800,1000,800}
+    };
+    int mp11 [2*5] = {300,100,200,100,200,0,300,0,300,100};
+    polygon_45_set_data<int> pset1;
+    polygon_45_set_data<int> pset2;
+    for(int i = 0; i < 7; ++i) {
+      addpoly(pset1, mp1[i], 4);
+    }
+    addpoly(pset1, mp11, 5);
+//     //MULTIPOLYGON
+//       (
+//        ((200 800,100 800,100 700,200 700,200 800)),
+//        ((400 200,300 100,400 100,400 200)),
+//        ((400 800,300 700,400 700,400 800)),
+//        ((700 100,600 0,700 0,700 100)),
+//        ((700 200,600 200,600 100,700 200)),
+//        ((900 200,800 200,800 0,900 0,900 200)),
+//        ((1000 300,900 200,1000 200,1000 300)))
+    int mp2 [5][2*4] = {
+      {400,200,300,100,400,100,400,200},
+      {400,800,300,700,400,700,400,800},
+      {700,100,600,0,700,0,700,100},
+      {700,200,600,200,600,100,700,200},
+      {1000,300,900,200,1000,200,1000,300},
+    };
+    int mp21 [2*5] = {200,800,100,800,100,700,200,700,200,800};
+    int mp22 [2*5] = {900,200,800,200,800,0,900,0,900,200};
+    for(int i = 0; i < 5; ++i) {
+      addpoly(pset2, mp2[i], 4);
+    }
+    addpoly(pset2, mp21, 5);
+    addpoly(pset2, mp22, 5);
+    polygon_45_set_data<int> orr = pset1 + pset2;
+    polygon_45_set_data<int> inr = pset1 & pset2;
+    std::cout << area(orr)<<std::endl;;
+    std::cout << area(inr)<<std::endl;;
+    std::vector<polygon_45_with_holes_data<int> > polys;
+    assign(polys, orr);
+    std::cout << area(polys) << std::endl;
+    polygon_set_data<int> testbug;
+    testbug.insert(orr);
+    std::cout << area(testbug) << std::endl;
+    polygon_set_data<int> testbug2;
+    for(int i = 0; i < polys.size(); ++i) {
+      for(int j = 0; j < polys.size(); ++j) {
+        testbug2.clear();
+        testbug2.insert(polys[i]);
+        testbug2.insert(polys[j]);
+        std::cout << i << " " << j << std::endl;
+        std::cout << polys[i] << std::endl;
+        std::cout << polys[j] << std::endl;
+        if(area(testbug2) == 0.0) {
+          std::cout << area(testbug2) << std::endl;
+          std::cout << "Self touch 45 through general interface failed!\n";
+          return 1;
+        }
+      }
+    }
+  }
   std::cout << "ALL TESTS COMPLETE\n";
   return 0;
 }
+