diff options
author | Alessandro Ranellucci <aar@cpan.org> | 2013-05-30 22:06:05 +0400 |
---|---|---|
committer | Alessandro Ranellucci <aar@cpan.org> | 2013-05-30 22:06:05 +0400 |
commit | 7baaf6bf5d3cdf68a877a16d5f27e76f0fbc6e35 (patch) | |
tree | 6ae9d439a034e3fa03f6efcd1d393e46a17ebb21 /t/skirt_brim.t | |
parent | 8f5a9589485fff618921685e7d70da67826587bd (diff) |
Fixed regression causing skirt_height to he honored incorrectly when printing more than one object. Includes regression test #1200
Diffstat (limited to 't/skirt_brim.t')
-rw-r--r-- | t/skirt_brim.t | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/t/skirt_brim.t b/t/skirt_brim.t new file mode 100644 index 000000000..c78bf41e0 --- /dev/null +++ b/t/skirt_brim.t @@ -0,0 +1,46 @@ +use Test::More tests => 1; +use strict; +use warnings; + +BEGIN { + use FindBin; + use lib "$FindBin::Bin/../lib"; +} + +use List::Util qw(first); +use Slic3r; +use Slic3r::Test; + +{ + my $config = Slic3r::Config->new_from_defaults; + $config->set('skirts', 1); + $config->set('skirt_height', 2); + $config->set('perimeters', 0); + $config->set('perimeter_speed', 99); + $config->set('cooling', 0); # to prevent speeds to be altered + $config->set('first_layer_speed', '100%'); # to prevent speeds to be altered + + my $test = sub { + my ($conf) = @_; + $conf ||= $config; + + my $print = Slic3r::Test::init_print(['20mm_cube','20mm_cube'], config => $config); + + my %layers_with_skirt = (); # Z => $count + Slic3r::GCode::Reader->new(gcode => Slic3r::Test::gcode($print))->parse(sub { + my ($self, $cmd, $args, $info) = @_; + + if (defined $self->Z) { + $layers_with_skirt{$self->Z} //= 0; + $layers_with_skirt{$self->Z} = 1 + if $info->{extruding} && ($args->{F} // $self->F) == $config->perimeter_speed*60; + } + }); + fail "wrong number of layers with skirt" + unless (grep $_, values %layers_with_skirt) == $config->skirt_height; + }; + + ok $test->(), "skirt_height is honored when printing multiple objects too"; +} + +__END__ |