Пример #1
0
    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)
Пример #2
0
    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)