def test_reset(self): """Test init state.""" position = Position(self.Settings, self.OctoprintPrinterProfile, False) # reset all initialized vars to something else position.X = -1 position.XOffset = -1 position.XPrevious = -1 position.Y = -1 position.YOffset = -1 position.YPrevious = -1 position.Z = -1 position.ZOffset = -1 position.ZPrevious = -1 position.E = -1 position.EOffset = -1 position.EPrevious = -1 position.IsRelative = True position.IsExtruderRelative = False position.Height = -1 position.HeightPrevious = -1 position.ZDelta = -1 position.ZDeltaPrevious = -1 position.Layer = -1 position.IsLayerChange = True position.IsZHop = True position.XHomed = True position.YHomed = True position.ZHomed = True position.HasPositionError = True position.IsZHop = True position.PositionError = "Error!" # reset position.Reset() # test initial state self.assertTrue(position.X is None) self.assertTrue(position.XOffset == 0) self.assertTrue(position.XPrevious is None) self.assertTrue(position.Y is None) self.assertTrue(position.YOffset == 0) self.assertTrue(position.YPrevious is None) self.assertTrue(position.Z is None) self.assertTrue(position.ZOffset == 0) self.assertTrue(position.ZPrevious is None) self.assertTrue(position.E == 0) self.assertTrue(position.EOffset == 0) self.assertTrue(position.EPrevious == 0) self.assertTrue(position.IsRelative == False) self.assertTrue(position.IsExtruderRelative) self.assertTrue(position.Height is None) self.assertTrue(position.HeightPrevious == 0) self.assertTrue(position.ZDelta is None) self.assertTrue(position.ZDeltaPrevious is None) self.assertTrue(position.Layer == 0) self.assertTrue(not position.IsLayerChange) self.assertTrue(not position.IsZHop) self.assertTrue(not position.XHomed) self.assertTrue(not position.YHomed) self.assertTrue(not position.ZHomed) self.assertTrue(not position.HasPositionError) self.assertTrue(not position.IsZHop) self.assertTrue(position.PositionError is None)
def test_GcodeTrigger(self): """Test the gcode triggers""" self.Settings.CurrentSnapshot().gcode_trigger_require_zhop = False position = Position(self.Settings, self.OctoprintPrinterProfile, False) trigger = GcodeTrigger(self.Settings) # test initial state self.assertTrue(trigger.IsTriggered == False) self.assertTrue(trigger.IsWaiting == False) # send a command that is NOT the snapshot command using the defaults trigger.Update(position, "NotTheSnapshotCommand") self.assertTrue(trigger.IsTriggered == False) self.assertTrue(trigger.IsWaiting == False) # send a command that is the snapshot command without the axis being homes trigger.Update(position, "snap") self.assertTrue(trigger.IsTriggered == False) self.assertTrue(trigger.IsWaiting == False) # home the axis and resend the snap command - will be false because the PREVEIOUS state must be homed position.Update("g28") trigger.Update(position, "snap") self.assertTrue(trigger.IsTriggered == False) self.assertTrue(trigger.IsWaiting == False) # try again, should now work position.Update("Snap") trigger.Update(position, "snap") self.assertTrue(trigger.IsTriggered == True) self.assertTrue(trigger.IsWaiting == False) # try again, but this time set RequresZHop to true trigger.RequireZHop = True trigger.Update(position, "snap") self.assertTrue(trigger.IsTriggered == False) self.assertTrue(trigger.IsWaiting == True) # send another command to see if we are still waiting trigger.Update(position, "NotTheSnapshotCommand") self.assertTrue(trigger.IsTriggered == False) self.assertTrue(trigger.IsWaiting == True) # fake a zhop position.IsZHop = True trigger.Update(position, "NotTheSnapshotCommand") self.assertTrue(trigger.IsTriggered == True) self.assertTrue(trigger.IsWaiting == False) # send a command that is NOT the snapshot command using the defaults trigger.Update(position, "NotTheSnapshotCommand") self.assertTrue(trigger.IsTriggered == False) self.assertTrue(trigger.IsWaiting == False) # change the snapshot triggers and make sure they are working self.Settings.CurrentSnapshot().gcode_trigger_require_zhop = False self.Settings.CurrentSnapshot().gcode_trigger_on_extruding = True self.Settings.CurrentSnapshot( ).gcode_trigger_on_extruding_start = False self.Settings.CurrentSnapshot().gcode_trigger_on_primed = False self.Settings.CurrentSnapshot().gcode_trigger_on_retracting = False self.Settings.CurrentSnapshot().gcode_trigger_on_retracted = False self.Settings.CurrentSnapshot().gcode_trigger_on_detracting = False trigger = GcodeTrigger(self.Settings) position.Extruder.IsExtruding = False position.Extruder.IsExtrudingStart = False position.Extruder.IsPrimed = False position.Extruder.IsRetracting = False position.Extruder.IsRetracted = False position.Extruder.IsDetracting = False # send a command that is the snapshot command using the defaults trigger.Update(position, "snap") self.assertTrue(trigger.IsTriggered == False) self.assertTrue(trigger.IsWaiting == True) # change the extruder state and test position.Extruder.IsExtruding = True trigger.Update(position, "NotTheSnapshotCommand") self.assertTrue(trigger.IsTriggered == True) self.assertTrue(trigger.IsWaiting == False)