gcode.t 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. use Test::More tests => 4;
  2. use strict;
  3. use warnings;
  4. BEGIN {
  5. use FindBin;
  6. use lib "$FindBin::Bin/../lib";
  7. }
  8. use List::Util qw(first);
  9. use Slic3r;
  10. use Slic3r::Geometry qw(scale);
  11. use Slic3r::Test;
  12. {
  13. my $gcodegen = Slic3r::GCode->new(
  14. config => Slic3r::Config->new_from_defaults,
  15. layer_count => 1,
  16. extruders => [],
  17. );
  18. $gcodegen->set_shift(10, 10);
  19. is_deeply $gcodegen->last_pos->arrayref, [scale -10, scale -10], 'last_pos is shifted correctly';
  20. }
  21. {
  22. my $config = Slic3r::Config->new_from_defaults;
  23. $config->set('wipe', [1]);
  24. my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
  25. my $have_wipe = 0;
  26. my @retract_speeds = ();
  27. Slic3r::GCode::Reader->new->parse(Slic3r::Test::gcode($print), sub {
  28. my ($self, $cmd, $args, $info) = @_;
  29. if ($info->{retracting} && $info->{dist_XY} > 0) {
  30. $have_wipe = 1;
  31. my $move_time = $info->{dist_XY} / ($args->{F} // $self->F);
  32. push @retract_speeds, abs($info->{dist_E}) / $move_time;
  33. }
  34. });
  35. ok $have_wipe, "wipe";
  36. ok !defined (first { abs($_ - $config->retract_speed->[0]*60) < 5 } @retract_speeds), 'wipe moves don\'t retract faster than configured speed';
  37. }
  38. {
  39. my $config = Slic3r::Config->new_from_defaults;
  40. $config->set('complete_objects', 1);
  41. $config->set('duplicate', 2);
  42. my $print = Slic3r::Test::init_print('20mm_cube', config => $config);
  43. ok Slic3r::Test::gcode($print), "complete_objects";
  44. }
  45. __END__