def test_to_command_returns_empty_list_for_ignorable_codes(self): test_gcode_lines = [";Comment","M101","O NAME OF PROGRAM"] command_reader = GCodeCommandReader() actuals = [ command_reader.to_command(line) for line in test_gcode_lines ] self.assertEquals([[],[],[]], actuals)
def test_to_command_throws_exception_if_speed_never_specified(self): gcode_test = "G1 X1.0 Y1.0 E12" command_reader = GCodeCommandReader() expected = [ LateralDraw([0.0,0.0],[1.0,1.0],100.0) ] with self.assertRaises(Exception): command_reader.to_command(gcode_test)
def test_to_command_returns_empty_list_for_blank(self): test_gcode_line = "" command_reader = GCodeCommandReader() actual = command_reader.to_command(test_gcode_line) self.assertEquals([], actual)
def test_to_command_returns_a_LateralDraw_given_move_with_extrude(self): gcode_line = "G1 X1.0 Y1.0 F6000 E12" command_reader = GCodeCommandReader() expected = [ LateralDraw([0.0,0.0],[1.0,1.0],100.0) ] actual = command_reader.to_command(gcode_line) self.assertCommandsEqual(expected, actual)
def test_to_command_handles_vertical_movement(self): gcode_test = "G0 Z1.0 F6000 E0" command_reader = GCodeCommandReader() expected = [ VerticalMove(0.0,1.0, 100.0) ] actual = command_reader.to_command(gcode_test) self.assertCommandsEqual(expected, actual)
def test_to_command_creates_move_if_E_not_specified(self): gcode_test = "G0 X1.0 Y1.0 F6000" command_reader = GCodeCommandReader() expected = [ LateralMove([0.0,0.0],[1.0, 1.0], 100.0) ] actual = command_reader.to_command(gcode_test) self.assertCommandsEqual(expected, actual)
def test_to_command_handles_unknown_sub_command(self): gcode_line = "G1 X1.0 Y1.0 F6000 E12 Q55" command_reader = GCodeCommandReader() expected = [ LateralDraw([0.0,0.0],[1.0, 1.0], 100) ] actual = command_reader.to_command(gcode_line) self.assertCommandsEqual(expected, actual)
def test_to_command_returns_a_LateralDraw_when_0(self): gcode_setup = "G1 X0.0 Y0.0 F6000 E12" gcode_line = "G1 X-8.98 Y0.00 E1.71364" command_reader = GCodeCommandReader() expected = [LateralDraw([0.0, 0.0], [-8.98, 0.0], 100.0)] command_reader.to_command(gcode_setup) actual = command_reader.to_command(gcode_line) self.assertCommandsEqual(expected, actual)
def test_to_command_returns_a_LateralDraw_when_0(self): gcode_setup = "G1 X0.0 Y0.0 F6000 E12" gcode_line = "G1 X-8.98 Y0.00 E1.71364" command_reader = GCodeCommandReader() expected = [ LateralDraw([0.0,0.0],[-8.98,0.0],100.0) ] command_reader.to_command(gcode_setup) actual = command_reader.to_command(gcode_line) self.assertCommandsEqual(expected, actual)
def test_to_command_does_not_permit_handles_vertical_down_movement(self): gcode_setup = "G0 Z1.0 F6000 E0" gcode_test = "G0 Z0.1 F6000 E0" command_reader = GCodeCommandReader() command_reader.to_command(gcode_setup) with self.assertRaises(Exception): command_reader.to_command(gcode_test)
def test_to_command_remembers_last_speed_if_none_specified(self): gcode_setup = "G1 X1.0 Y1.0 F6000 E12" gcode_test = "G1 X1.0 Y1.0 E12" command_reader = GCodeCommandReader() expected = [ LateralDraw([1.0,1.0],[1.0,1.0],100.0) ] command_reader.to_command(gcode_setup) actual = command_reader.to_command(gcode_test) self.assertCommandsEqual(expected, actual)
def test_to_command_remembers_last_speed_if_only_specified(self): gcode_setup = "G1 F6000" gcode_test = "G1 X1.0 Y1.0 E12" command_reader = GCodeCommandReader() expected_verify = [ LateralDraw([0.0,0.0],[1.0,1.0],100.0) ] setup = command_reader.to_command(gcode_setup) verify = command_reader.to_command(gcode_test) self.assertEqual([], setup) self.assertCommandsEqual(expected_verify, verify)
def test_to_command_handles_units(self): gcode_metric = "G21" gcode_metric_line = "G1 X1.0 Y1.0 F6000 E12" gcode_feet = "G20" gcode_feet_line = "G1 X1.0 Y1.0 F6000 E12" command_reader = GCodeCommandReader() expected_metric = [ LateralDraw([0.0,0.0],[1.0,1.0],100.0) ] expected_feet = [ LateralDraw([1.0,1.0],[25.4,25.4],2540.0) ] command_reader.to_command(gcode_metric) self.assertCommandsEqual(expected_metric, command_reader.to_command(gcode_metric_line)) command_reader.to_command(gcode_feet) self.assertCommandsEqual(expected_feet, command_reader.to_command(gcode_feet_line))
def test_vertically_diagonal_move_are_made_moves_and_lateral_moves(self): gcode_setup1 = "G0 Z0.1 F6000 E0" gcode_setup2 = "G0 Z0.2 F6000 E0" gcode_setup3 = "G0 X0.5 Y0.5 F6000" gcode_test = "G0 X0.7 Y0.7 Z0.5 F6000" command_reader = GCodeCommandReader() expected = [ VerticalMove(0.2,0.5,100.0), LateralMove([0.5,0.5],[0.7,0.7],100.0), ] command_reader.to_command(gcode_setup1) command_reader.to_command(gcode_setup2) command_reader.to_command(gcode_setup3) self.assertCommandsEqual(expected, command_reader.to_command(gcode_test))
def test_to_command_can_scale_when_scale_provided(self): gcode_setup1 = "G0 Z0.1 F6000 E0" gcode_setup2 = "G0 Z0.2 F6000 E0" gcode_setup3 = "G0 X0.0 Y0.0 F6000" gcode_test = "G0 X1.0 Y1.0 Z0.3 F6000" command_reader = GCodeCommandReader(scale=0.1) expected = [ VerticalMove(0.02, 0.03, 100.0), LateralMove([0.0, 0.0], [0.1, 0.1], 100.0), ] command_reader.to_command(gcode_setup1) command_reader.to_command(gcode_setup2) command_reader.to_command(gcode_setup3) self.assertCommandsEqual(expected, command_reader.to_command(gcode_test))
def test_to_command_can_scale_when_scale_provided(self): gcode_setup1 = "G0 Z0.1 F6000 E0" gcode_setup2 = "G0 Z0.2 F6000 E0" gcode_setup3 = "G0 X0.0 Y0.0 F6000" gcode_test = "G0 X1.0 Y1.0 Z0.3 F6000" command_reader = GCodeCommandReader(scale = 0.1) expected = [ VerticalMove(0.02,0.03,100.0), LateralMove([0.0,0.0],[0.1,0.1],100.0), ] command_reader.to_command(gcode_setup1) command_reader.to_command(gcode_setup2) command_reader.to_command(gcode_setup3) self.assertCommandsEqual(expected, command_reader.to_command(gcode_test))
def test_to_command_allows_vertical_write_provide_layer_increment_specified(self): gcode_setup1 = "G0 Z0.1 F6000 E0" gcode_setup2 = "G0 Z0.2 F6000 E0" gcode_setup3 = "G0 X0.5 Y0.5 F6000" gcode_test = "G0 Z0.5 F6000 E1" command_reader = GCodeCommandReader() expected = [ VerticalMove(0.2,0.3,100.0), LateralDraw([0.5,0.5],[0.5,0.5],100.0), VerticalMove(0.3,0.4,100.0), LateralDraw([0.5,0.5],[0.5,0.5],100.0), VerticalMove(0.4,0.5,100.0), LateralDraw([0.5,0.5],[0.5,0.5],100.0), ] command_reader.to_command(gcode_setup1) command_reader.to_command(gcode_setup2) command_reader.to_command(gcode_setup3) actual = command_reader.to_command(gcode_test) self.assertCommandsEqual(expected, actual)
def test_unsupported_codes_raises_exception(self): test_gcode_line = "P01 X123.0 C7" command_reader = GCodeCommandReader() with self.assertRaises(Exception): command_reader.to_command(test_gcode_line)