mirror of
https://github.com/QIDITECH/QIDISlicer.git
synced 2026-01-30 23:48:44 +03:00
Prusa 2.7.2
This commit is contained in:
@@ -5,6 +5,73 @@
|
||||
|
||||
using namespace Slic3r;
|
||||
|
||||
struct PolylineTestCase {
|
||||
Polyline polyline{
|
||||
{100, 100},
|
||||
{200, 100},
|
||||
{200, 200}
|
||||
};
|
||||
};
|
||||
|
||||
TEST_CASE_METHOD(PolylineTestCase, "Lines can be retrieved", "[Polyline]") {
|
||||
|
||||
CHECK(polyline.lines() == Lines{
|
||||
{{100, 100}, {200, 100}},
|
||||
{{200, 100}, {200, 200}},
|
||||
});
|
||||
}
|
||||
|
||||
TEST_CASE_METHOD(PolylineTestCase, "Clip", "[Polyline]") {
|
||||
const double len = polyline.length();
|
||||
polyline.clip_end(len/3);
|
||||
CHECK(std::abs(polyline.length() - 2.0/3.0*len) < 1);
|
||||
}
|
||||
|
||||
TEST_CASE_METHOD(PolylineTestCase, "Append", "[Polyline]") {
|
||||
Polyline tested_polyline{polyline};
|
||||
tested_polyline.append(tested_polyline);
|
||||
Points expected{polyline.points};
|
||||
expected.insert(expected.end(), polyline.points.begin(), polyline.points.end());
|
||||
|
||||
CHECK(tested_polyline.points == expected);
|
||||
}
|
||||
|
||||
TEST_CASE_METHOD(PolylineTestCase, "Extend end", "[Polyline]") {
|
||||
CHECK(polyline.length() == 100*2);
|
||||
polyline.extend_end(50);
|
||||
CHECK(polyline.length() == 100*2 + 50);
|
||||
}
|
||||
|
||||
TEST_CASE_METHOD(PolylineTestCase, "Extend start", "[Polyline]") {
|
||||
CHECK(polyline.length() == 100*2);
|
||||
polyline.extend_start(50);
|
||||
CHECK(polyline.length() == 100*2 + 50);
|
||||
}
|
||||
|
||||
TEST_CASE_METHOD(PolylineTestCase, "Split", "[Polyline]") {
|
||||
Polyline p1;
|
||||
Polyline p2;
|
||||
const Point point{150, 100};
|
||||
polyline.split_at(point, &p1, &p2);
|
||||
CHECK(p1.size() == 2);
|
||||
CHECK(p2.size() == 3);
|
||||
CHECK(p1.last_point() == point);
|
||||
CHECK(p2.first_point() == point);
|
||||
}
|
||||
|
||||
TEST_CASE_METHOD(PolylineTestCase, "Split at first point", "[Polyline]") {
|
||||
Polyline to_split{
|
||||
polyline.points[0],
|
||||
polyline.points[1],
|
||||
polyline.points[2],
|
||||
polyline.points[0]
|
||||
};
|
||||
Polyline p1;
|
||||
Polyline p2;
|
||||
to_split.split_at(to_split.first_point(), &p1, &p2);
|
||||
CHECK(p1.size() == 1);
|
||||
CHECK(p2.size() == 4);
|
||||
}
|
||||
SCENARIO("Simplify polyne, template", "[Polyline]")
|
||||
{
|
||||
Points polyline{ {0,0}, {1000,0}, {2000,0}, {2000,1000}, {2000,2000}, {1000,2000}, {0,2000}, {0,1000}, {0,0} };
|
||||
@@ -43,4 +110,23 @@ SCENARIO("Simplify polyline", "[Polyline]")
|
||||
}
|
||||
}
|
||||
}
|
||||
GIVEN("polyline 3") {
|
||||
auto polyline = Polyline{ {0,0}, {100,0}, {50,10} };
|
||||
WHEN("simplified with Douglas-Peucker") {
|
||||
polyline.simplify(25.);
|
||||
THEN("not simplified") {
|
||||
REQUIRE(polyline == Polyline{ {0,0}, {100, 0}, {50,10} });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GIVEN("polyline 4") {
|
||||
auto polyline = Polyline{ {0,0}, {20,0}, {50,0}, {80,0}, {100,0} };
|
||||
WHEN("simplified with Douglas-Peucker") {
|
||||
polyline.simplify(2.);
|
||||
THEN("not simplified") {
|
||||
REQUIRE(polyline == Polyline{ {0,0}, {100,0} });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user