mirror of
https://github.com/boostorg/polygon.git
synced 2026-02-13 12:42:12 +00:00
updated tests to reflect change in use of 45 from general polygon set and test for regression of that change
[SVN r69627]
This commit is contained in:
@@ -3473,10 +3473,11 @@ int main() {
|
||||
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 @@ int main() {
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user