Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/t/multi.t
diff options
context:
space:
mode:
authorAlessandro Ranellucci <aar@cpan.org>2014-04-19 13:43:41 +0400
committerAlessandro Ranellucci <aar@cpan.org>2014-04-19 13:43:41 +0400
commitf51921a11a32659f9d9c1bfaabc8a8db1f054680 (patch)
treefedc99980e717b95745318d639b310266c62dcf8 /t/multi.t
parent0c50ab532331ce6a537ce7329a6c4285e7f0e34e (diff)
Default extruder wasn't applied to perimeter extruder. Includes regression test. #1868
Diffstat (limited to 't/multi.t')
-rw-r--r--t/multi.t52
1 files changed, 44 insertions, 8 deletions
diff --git a/t/multi.t b/t/multi.t
index cc87083d1..b15c261e5 100644
--- a/t/multi.t
+++ b/t/multi.t
@@ -1,4 +1,4 @@
-use Test::More tests => 8;
+use Test::More tests => 12;
use strict;
use warnings;
@@ -86,13 +86,9 @@ use Slic3r::Test;
}
{
- my $model = Slic3r::Model->new;
- my $object = $model->add_object;
- my $lower_config = $model->set_material('lower')->config;
- my $upper_config = $model->set_material('upper')->config;
- $object->add_volume(mesh => Slic3r::Test::mesh('20mm_cube'), material_id => 'lower');
- $object->add_volume(mesh => Slic3r::Test::mesh('20mm_cube', translate => [0,0,20]), material_id => 'upper');
- $object->add_instance(offset => [0,0]);
+ my $model = stacked_cubes();
+ my $lower_config = $model->get_material('lower')->config;
+ my $upper_config = $model->get_material('upper')->config;
$lower_config->set('extruder', 1);
$lower_config->set('bottom_solid_layers', 0);
@@ -142,4 +138,44 @@ use Slic3r::Test;
}
}
+{
+ my $model = stacked_cubes();
+
+ my $config = Slic3r::Config->new_from_defaults;
+ $config->set('skirts', 0);
+ my $print = Slic3r::Test::init_print($model, config => $config);
+
+ is $model->get_material('lower')->config->extruder, 1, 'auto_assign_extruders() assigned correct extruder to first volume';
+ is $model->get_material('upper')->config->extruder, 2, 'auto_assign_extruders() assigned correct extruder to second volume';
+
+ my $tool = undef;
+ my %T0 = my %T1 = (); # Z => 1
+ Slic3r::GCode::Reader->new->parse(my $gcode = Slic3r::Test::gcode($print), sub {
+ my ($self, $cmd, $args, $info) = @_;
+
+ if ($cmd =~ /^T(\d+)/) {
+ $tool = $1;
+ } elsif ($cmd eq 'G1' && $info->{extruding} && $info->{dist_XY} > 0) {
+ if ($tool == 0) {
+ $T0{$self->Z} = 1;
+ } elsif ($tool == 1) {
+ $T1{$self->Z} = 1;
+ }
+ }
+ });
+
+ ok !(defined first { $_ > 20 } keys %T0), 'T0 is never used for upper object';
+ ok !(defined first { $_ < 20 } keys %T1), 'T1 is never used for lower object';
+}
+
+sub stacked_cubes {
+ my $model = Slic3r::Model->new;
+ my $object = $model->add_object;
+ $object->add_volume(mesh => Slic3r::Test::mesh('20mm_cube'), material_id => 'lower');
+ $object->add_volume(mesh => Slic3r::Test::mesh('20mm_cube', translate => [0,0,20]), material_id => 'upper');
+ $object->add_instance(offset => [0,0]);
+
+ return $model;
+}
+
__END__