Disabled broken tests, ported some more tests to C++,
removed Perl tests that were already ported to C++.
This commit is contained in:
parent
f8dc74374c
commit
2e7e95adae
@ -6,6 +6,7 @@ add_executable(${_TEST_NAME}_tests
|
|||||||
test_extrusion_entity.cpp
|
test_extrusion_entity.cpp
|
||||||
test_fill.cpp
|
test_fill.cpp
|
||||||
test_flow.cpp
|
test_flow.cpp
|
||||||
|
test_gcode.cpp
|
||||||
test_gcodewriter.cpp
|
test_gcodewriter.cpp
|
||||||
test_model.cpp
|
test_model.cpp
|
||||||
test_print.cpp
|
test_print.cpp
|
||||||
|
22
tests/fff_print/test_gcode.cpp
Normal file
22
tests/fff_print/test_gcode.cpp
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#include <catch2/catch.hpp>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
#include "libslic3r/GCode.hpp"
|
||||||
|
|
||||||
|
using namespace Slic3r;
|
||||||
|
|
||||||
|
SCENARIO("Origin manipulation", "[GCode]") {
|
||||||
|
Slic3r::GCode gcodegen;
|
||||||
|
WHEN("set_origin to (10,0)") {
|
||||||
|
gcodegen.set_origin(Vec2d(10,0));
|
||||||
|
REQUIRE(gcodegen.origin() == Vec2d(10, 0));
|
||||||
|
}
|
||||||
|
WHEN("set_origin to (10,0) and translate by (5, 5)") {
|
||||||
|
gcodegen.set_origin(Vec2d(10,0));
|
||||||
|
gcodegen.set_origin(gcodegen.origin() + Vec2d(5, 5));
|
||||||
|
THEN("origin returns reference to point") {
|
||||||
|
REQUIRE(gcodegen.origin() == Vec2d(15,5));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -119,6 +119,8 @@ SCENARIO("Original Slic3r Skirt/Brim tests", "[SkirtBrim]") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// This is a real error! One shall print the brim with the external perimeter extruder!
|
||||||
WHEN("Perimeter extruder = 2 and support extruders = 3") {
|
WHEN("Perimeter extruder = 2 and support extruders = 3") {
|
||||||
THEN("Brim is printed with the extruder used for the perimeters of first object") {
|
THEN("Brim is printed with the extruder used for the perimeters of first object") {
|
||||||
config.set_deserialize({
|
config.set_deserialize({
|
||||||
@ -148,6 +150,8 @@ SCENARIO("Original Slic3r Skirt/Brim tests", "[SkirtBrim]") {
|
|||||||
REQUIRE(tool == config.opt_int("support_material_extruder") - 1);
|
REQUIRE(tool == config.opt_int("support_material_extruder") - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
WHEN("brim width to 1 with layer_width of 0.5") {
|
WHEN("brim width to 1 with layer_width of 0.5") {
|
||||||
config.set_deserialize({
|
config.set_deserialize({
|
||||||
{ "skirts", 0 },
|
{ "skirts", 0 },
|
||||||
@ -215,6 +219,8 @@ SCENARIO("Original Slic3r Skirt/Brim tests", "[SkirtBrim]") {
|
|||||||
|
|
||||||
// config.set("support_material", true); // to prevent speeds to be altered
|
// config.set("support_material", true); // to prevent speeds to be altered
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// This test is not finished.
|
||||||
THEN("skirt length is large enough to contain object with support") {
|
THEN("skirt length is large enough to contain object with support") {
|
||||||
CHECK(config.opt_bool("support_material")); // test is not valid if support material is off
|
CHECK(config.opt_bool("support_material")); // test is not valid if support material is off
|
||||||
std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, config);
|
std::string gcode = Slic3r::Test::slice({TestMesh::cube_20x20x20}, config);
|
||||||
@ -248,6 +254,8 @@ SCENARIO("Original Slic3r Skirt/Brim tests", "[SkirtBrim]") {
|
|||||||
double hull_perimeter = unscale<double>(convex_hull.split_at_first_point().length());
|
double hull_perimeter = unscale<double>(convex_hull.split_at_first_point().length());
|
||||||
REQUIRE(skirt_length > hull_perimeter);
|
REQUIRE(skirt_length > hull_perimeter);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
WHEN("Large minimum skirt length is used.") {
|
WHEN("Large minimum skirt length is used.") {
|
||||||
config.set("min_skirt_length", 20);
|
config.set("min_skirt_length", 20);
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
using namespace Slic3r;
|
using namespace Slic3r;
|
||||||
|
|
||||||
TEST_CASE("Polygon::contains works properly", ""){
|
TEST_CASE("Polygon::contains works properly", "[Geometry]"){
|
||||||
// this test was failing on Windows (GH #1950)
|
// this test was failing on Windows (GH #1950)
|
||||||
Slic3r::Polygon polygon(std::vector<Point>({
|
Slic3r::Polygon polygon(std::vector<Point>({
|
||||||
Point(207802834,-57084522),
|
Point(207802834,-57084522),
|
||||||
@ -29,7 +29,7 @@ TEST_CASE("Polygon::contains works properly", ""){
|
|||||||
REQUIRE(polygon.contains(point));
|
REQUIRE(polygon.contains(point));
|
||||||
}
|
}
|
||||||
|
|
||||||
SCENARIO("Intersections of line segments"){
|
SCENARIO("Intersections of line segments", "[Geometry]"){
|
||||||
GIVEN("Integer coordinates"){
|
GIVEN("Integer coordinates"){
|
||||||
Line line1(Point(5,15),Point(30,15));
|
Line line1(Point(5,15),Point(30,15));
|
||||||
Line line2(Point(10,20), Point(10,10));
|
Line line2(Point(10,20), Point(10,10));
|
||||||
@ -127,7 +127,7 @@ SCENARIO("polygon_is_convex works"){
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
|
||||||
TEST_CASE("Creating a polyline generates the obvious lines"){
|
TEST_CASE("Creating a polyline generates the obvious lines", "[Geometry]"){
|
||||||
Slic3r::Polyline polyline;
|
Slic3r::Polyline polyline;
|
||||||
polyline.points = std::vector<Point>({Point(0, 0), Point(10, 0), Point(20, 0)});
|
polyline.points = std::vector<Point>({Point(0, 0), Point(10, 0), Point(20, 0)});
|
||||||
REQUIRE(polyline.lines().at(0).a == Point(0,0));
|
REQUIRE(polyline.lines().at(0).a == Point(0,0));
|
||||||
@ -136,7 +136,7 @@ TEST_CASE("Creating a polyline generates the obvious lines"){
|
|||||||
REQUIRE(polyline.lines().at(1).b == Point(20,0));
|
REQUIRE(polyline.lines().at(1).b == Point(20,0));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Splitting a Polygon generates a polyline correctly"){
|
TEST_CASE("Splitting a Polygon generates a polyline correctly", "[Geometry]"){
|
||||||
Slic3r::Polygon polygon(std::vector<Point>({Point(0, 0), Point(10, 0), Point(5, 5)}));
|
Slic3r::Polygon polygon(std::vector<Point>({Point(0, 0), Point(10, 0), Point(5, 5)}));
|
||||||
Slic3r::Polyline split = polygon.split_at_index(1);
|
Slic3r::Polyline split = polygon.split_at_index(1);
|
||||||
REQUIRE(split.points[0]==Point(10,0));
|
REQUIRE(split.points[0]==Point(10,0));
|
||||||
@ -146,7 +146,7 @@ TEST_CASE("Splitting a Polygon generates a polyline correctly"){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_CASE("Bounding boxes are scaled appropriately"){
|
TEST_CASE("Bounding boxes are scaled appropriately", "[Geometry]"){
|
||||||
BoundingBox bb(std::vector<Point>({Point(0, 1), Point(10, 2), Point(20, 2)}));
|
BoundingBox bb(std::vector<Point>({Point(0, 1), Point(10, 2), Point(20, 2)}));
|
||||||
bb.scale(2);
|
bb.scale(2);
|
||||||
REQUIRE(bb.min == Point(0,2));
|
REQUIRE(bb.min == Point(0,2));
|
||||||
@ -154,13 +154,13 @@ TEST_CASE("Bounding boxes are scaled appropriately"){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST_CASE("Offseting a line generates a polygon correctly"){
|
TEST_CASE("Offseting a line generates a polygon correctly", "[Geometry]"){
|
||||||
Slic3r::Polyline tmp = { Point(10,10), Point(20,10) };
|
Slic3r::Polyline tmp = { Point(10,10), Point(20,10) };
|
||||||
Slic3r::Polygon area = offset(tmp,5).at(0);
|
Slic3r::Polygon area = offset(tmp,5).at(0);
|
||||||
REQUIRE(area.area() == Slic3r::Polygon(std::vector<Point>({Point(10,5),Point(20,5),Point(20,15),Point(10,15)})).area());
|
REQUIRE(area.area() == Slic3r::Polygon(std::vector<Point>({Point(10,5),Point(20,5),Point(20,15),Point(10,15)})).area());
|
||||||
}
|
}
|
||||||
|
|
||||||
SCENARIO("Circle Fit, TaubinFit with Newton's method") {
|
SCENARIO("Circle Fit, TaubinFit with Newton's method", "[Geometry]") {
|
||||||
GIVEN("A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point") {
|
GIVEN("A vector of Vec2ds arranged in a half-circle with approximately the same distance R from some point") {
|
||||||
Vec2d expected_center(-6, 0);
|
Vec2d expected_center(-6, 0);
|
||||||
Vec2ds sample {Vec2d(6.0, 0), Vec2d(5.1961524, 3), Vec2d(3 ,5.1961524), Vec2d(0, 6.0), Vec2d(3, 5.1961524), Vec2d(-5.1961524, 3), Vec2d(-6.0, 0)};
|
Vec2ds sample {Vec2d(6.0, 0), Vec2d(5.1961524, 3), Vec2d(3 ,5.1961524), Vec2d(0, 6.0), Vec2d(3, 5.1961524), Vec2d(-5.1961524, 3), Vec2d(-6.0, 0)};
|
||||||
@ -252,7 +252,7 @@ SCENARIO("Circle Fit, TaubinFit with Newton's method") {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Chained path working correctly"){
|
TEST_CASE("Chained path working correctly", "[Geometry]"){
|
||||||
// if chained_path() works correctly, these points should be joined with no diagonal paths
|
// if chained_path() works correctly, these points should be joined with no diagonal paths
|
||||||
// (thus 26 units long)
|
// (thus 26 units long)
|
||||||
std::vector<Point> points = {Point(26,26),Point(52,26),Point(0,26),Point(26,52),Point(26,0),Point(0,52),Point(52,52),Point(52,0)};
|
std::vector<Point> points = {Point(26,26),Point(52,26),Point(0,26),Point(26,52),Point(26,0),Point(0,52),Point(52,52),Point(52,0)};
|
||||||
@ -263,7 +263,7 @@ TEST_CASE("Chained path working correctly"){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SCENARIO("Line distances"){
|
SCENARIO("Line distances", "[Geometry]"){
|
||||||
GIVEN("A line"){
|
GIVEN("A line"){
|
||||||
Line line(Point(0, 0), Point(20, 0));
|
Line line(Point(0, 0), Point(20, 0));
|
||||||
THEN("Points on the line segment have 0 distance"){
|
THEN("Points on the line segment have 0 distance"){
|
||||||
@ -279,7 +279,7 @@ SCENARIO("Line distances"){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SCENARIO("Polygon convex/concave detection"){
|
SCENARIO("Polygon convex/concave detection", "[Geometry]"){
|
||||||
GIVEN(("A Square with dimension 100")){
|
GIVEN(("A Square with dimension 100")){
|
||||||
auto square = Slic3r::Polygon /*new_scale*/(std::vector<Point>({
|
auto square = Slic3r::Polygon /*new_scale*/(std::vector<Point>({
|
||||||
Point(100,100),
|
Point(100,100),
|
||||||
@ -365,11 +365,30 @@ SCENARIO("Polygon convex/concave detection"){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_CASE("Triangle Simplification does not result in less than 3 points"){
|
TEST_CASE("Triangle Simplification does not result in less than 3 points", "[Geometry]"){
|
||||||
auto triangle = Slic3r::Polygon(std::vector<Point>({
|
auto triangle = Slic3r::Polygon(std::vector<Point>({
|
||||||
Point(16000170,26257364), Point(714223,461012), Point(31286371,461008)
|
Point(16000170,26257364), Point(714223,461012), Point(31286371,461008)
|
||||||
}));
|
}));
|
||||||
REQUIRE(triangle.simplify(250000).at(0).points.size() == 3);
|
REQUIRE(triangle.simplify(250000).at(0).points.size() == 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SCENARIO("Ported from xs/t/14_geometry.t", "[Geometry]"){
|
||||||
|
GIVEN(("square")){
|
||||||
|
Slic3r::Points points { { 100, 100 }, {100, 200 }, { 200, 200 }, { 200, 100 }, { 150, 150 } };
|
||||||
|
Slic3r::Polygon hull = Slic3r::Geometry::convex_hull(points);
|
||||||
|
SECTION("convex hull returns the correct number of points") { REQUIRE(hull.points.size() == 4); }
|
||||||
|
}
|
||||||
|
SECTION("arrange returns expected number of positions") {
|
||||||
|
Pointfs positions;
|
||||||
|
Slic3r::Geometry::arrange(4, Vec2d(20, 20), 5, nullptr, positions);
|
||||||
|
REQUIRE(positions.size() == 4);
|
||||||
|
}
|
||||||
|
SECTION("directions_parallel") {
|
||||||
|
REQUIRE(Slic3r::Geometry::directions_parallel(0, 0, 0));
|
||||||
|
REQUIRE(Slic3r::Geometry::directions_parallel(0, M_PI, 0));
|
||||||
|
REQUIRE(Slic3r::Geometry::directions_parallel(0, 0, M_PI / 180));
|
||||||
|
REQUIRE(Slic3r::Geometry::directions_parallel(0, M_PI, M_PI / 180));
|
||||||
|
REQUIRE(! Slic3r::Geometry::directions_parallel(M_PI /2, M_PI, 0));
|
||||||
|
REQUIRE(! Slic3r::Geometry::directions_parallel(M_PI /2, PI, M_PI /180));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,40 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
|
|
||||||
use Slic3r::XS;
|
|
||||||
use Test::More tests => 9;
|
|
||||||
|
|
||||||
use constant PI => 4 * atan2(1, 1);
|
|
||||||
|
|
||||||
{
|
|
||||||
my @points = (
|
|
||||||
Slic3r::Point->new(100,100),
|
|
||||||
Slic3r::Point->new(100,200),
|
|
||||||
Slic3r::Point->new(200,200),
|
|
||||||
Slic3r::Point->new(200,100),
|
|
||||||
Slic3r::Point->new(150,150),
|
|
||||||
);
|
|
||||||
my $hull = Slic3r::Geometry::convex_hull(\@points);
|
|
||||||
isa_ok $hull, 'Slic3r::Polygon', 'convex_hull returns a Polygon';
|
|
||||||
is scalar(@$hull), 4, 'convex_hull returns the correct number of points';
|
|
||||||
}
|
|
||||||
|
|
||||||
# directions_parallel() and directions_parallel_within() are tested
|
|
||||||
# also with Slic3r::Line::parallel_to() tests in 10_line.t
|
|
||||||
{
|
|
||||||
ok Slic3r::Geometry::directions_parallel_within(0, 0, 0), 'directions_parallel_within';
|
|
||||||
ok Slic3r::Geometry::directions_parallel_within(0, PI, 0), 'directions_parallel_within';
|
|
||||||
ok Slic3r::Geometry::directions_parallel_within(0, 0, PI/180), 'directions_parallel_within';
|
|
||||||
ok Slic3r::Geometry::directions_parallel_within(0, PI, PI/180), 'directions_parallel_within';
|
|
||||||
ok !Slic3r::Geometry::directions_parallel_within(PI/2, PI, 0), 'directions_parallel_within';
|
|
||||||
ok !Slic3r::Geometry::directions_parallel_within(PI/2, PI, PI/180), 'directions_parallel_within';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
my $positions = Slic3r::Geometry::arrange(4, Slic3r::Pointf->new(20, 20), 5);
|
|
||||||
is scalar(@$positions), 4, 'arrange() returns expected number of positions';
|
|
||||||
}
|
|
||||||
|
|
||||||
__END__
|
|
@ -1,29 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
|
|
||||||
use Slic3r::XS;
|
|
||||||
use Test::More tests => 2;
|
|
||||||
|
|
||||||
{
|
|
||||||
my $flow = Slic3r::Flow->new_from_width(
|
|
||||||
role => Slic3r::Flow::FLOW_ROLE_PERIMETER,
|
|
||||||
width => '1',
|
|
||||||
nozzle_diameter => 0.5,
|
|
||||||
layer_height => 0.3,
|
|
||||||
bridge_flow_ratio => 1,
|
|
||||||
);
|
|
||||||
isa_ok $flow, 'Slic3r::Flow', 'new_from_width';
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
my $flow = Slic3r::Flow->new(
|
|
||||||
width => 1,
|
|
||||||
height => 0.4,
|
|
||||||
nozzle_diameter => 0.5,
|
|
||||||
);
|
|
||||||
isa_ok $flow, 'Slic3r::Flow', 'new';
|
|
||||||
}
|
|
||||||
|
|
||||||
__END__
|
|
@ -1,22 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
|
|
||||||
use Slic3r::XS;
|
|
||||||
use Test::More tests => 3;
|
|
||||||
|
|
||||||
{
|
|
||||||
my $model = Slic3r::Model->new;
|
|
||||||
my $object = $model->_add_object;
|
|
||||||
isa_ok $object, 'Slic3r::Model::Object::Ref';
|
|
||||||
isa_ok $object->origin_translation, 'Slic3r::Pointf3::Ref';
|
|
||||||
$object->origin_translation->translate(10,0,0);
|
|
||||||
is_deeply \@{$object->origin_translation}, [10,0,0], 'origin_translation is modified by ref';
|
|
||||||
|
|
||||||
# my $lhr = [ [ 5, 10, 0.1 ] ];
|
|
||||||
# $object->set_layer_height_ranges($lhr);
|
|
||||||
# is_deeply $object->layer_height_ranges, $lhr, 'layer_height_ranges roundtrip';
|
|
||||||
}
|
|
||||||
|
|
||||||
__END__
|
|
@ -1,17 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
|
|
||||||
use Slic3r::XS;
|
|
||||||
use Test::More tests => 2;
|
|
||||||
|
|
||||||
{
|
|
||||||
my $gcodegen = Slic3r::GCode->new;
|
|
||||||
$gcodegen->set_origin(Slic3r::Pointf->new(10,0));
|
|
||||||
is_deeply $gcodegen->origin->pp, [10,0], 'set_origin';
|
|
||||||
$gcodegen->origin->translate(5,5);
|
|
||||||
is_deeply $gcodegen->origin->pp, [15,5], 'origin returns reference to point';
|
|
||||||
}
|
|
||||||
|
|
||||||
__END__
|
|
@ -1,14 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use warnings;
|
|
||||||
|
|
||||||
use Slic3r::XS;
|
|
||||||
use Test::More tests => 1;
|
|
||||||
|
|
||||||
eval {
|
|
||||||
Slic3r::xspp_test_croak_hangs_on_strawberry();
|
|
||||||
};
|
|
||||||
is $@, "xspp_test_croak_hangs_on_strawberry: exception catched\n", 'croak from inside a C++ exception delivered';
|
|
||||||
|
|
||||||
__END__
|
|
Loading…
Reference in New Issue
Block a user