def test000(self):
        """Test Output Generation.
        Empty path.  Produces only the preamble and postable.
        """

        self.docobj.Path = Path.Path([])
        postables = [self.docobj]

        # Test generating with header
        # Header contains a time stamp that messes up unit testing.
        # Only test length of result.
        args = "--no-show-editor"
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        self.assertTrue(len(gcode.splitlines()) == 13)

        # Test without header
        expected = """(begin preamble)
G17 G54 G40 G49 G80 G90
G21
(begin operation: testpath)
(machine: mach3_4, mm/min)
(finish operation: testpath)
(begin postamble)
M05
G17 G54 G90 G80 G40
M2
"""

        self.docobj.Path = Path.Path([])
        postables = [self.docobj]

        args = "--no-header --no-show-editor"
        # args = ("--no-header --no-comments --no-show-editor --precision=2")
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        self.assertEqual(gcode, expected)

        # test without comments
        expected = """G17 G54 G40 G49 G80 G90
G21
M05
G17 G54 G90 G80 G40
M2
"""

        args = "--no-header --no-comments --no-show-editor"
        # args = ("--no-header --no-comments --no-show-editor --precision=2")
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        self.assertEqual(gcode, expected)
 def test040(self):
     """
     Test Post-amble
     """
     self.docobj.Path = Path.Path([])
     postables = [self.docobj]
     args = "--no-header --no-comments --postamble='G0 Z50\nM2' --no-show-editor"
     gcode = postprocessor.export(postables, "gcode.tmp", args)
     result = gcode.splitlines()[-2]
     self.assertEqual(result, "G0 Z50")
     self.assertEqual(gcode.splitlines()[-1], "M2")
    def test080(self):
        """
        Test tool change
        """
        c = Path.Command("M6 T2")
        c2 = Path.Command("M3 S3000")
        self.docobj.Path = Path.Path([c, c2])
        postables = [self.docobj]

        args = "--no-header --no-show-editor"
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        self.assertEqual(gcode.splitlines()[5], "M5")
        self.assertEqual(gcode.splitlines()[6], "M6 T2 ")
        self.assertEqual(gcode.splitlines()[7], "G43 H2")
        self.assertEqual(gcode.splitlines()[8], "M3 S3000")

        # suppress TLO
        args = "--no-header --no-tlo --no-show-editor"
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        self.assertEqual(gcode.splitlines()[7], "M3 S3000")
    def test010(self):
        """Test command Generation.
        Test Precision
        """
        c = Path.Command("G0 X10 Y20 Z30")

        self.docobj.Path = Path.Path([c])
        postables = [self.docobj]

        args = "--no-header --no-show-editor"
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        result = gcode.splitlines()[5]
        expected = "G0 X10.000 Y20.000 Z30.000"
        self.assertEqual(result, expected)

        args = "--no-header --precision=2 --no-show-editor"
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        result = gcode.splitlines()[5]
        expected = "G0 X10.00 Y20.00 Z30.00"
        self.assertEqual(result, expected)
    def test030(self):
        """
        Test Pre-amble
        """

        self.docobj.Path = Path.Path([])
        postables = [self.docobj]

        args = "--no-header --no-comments --preamble='G18 G55' --no-show-editor"
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        result = gcode.splitlines()[0]
        self.assertEqual(result, "G18 G55")
    def test020(self):
        """
        Test Line Numbers
        """
        c = Path.Command("G0 X10 Y20 Z30")

        self.docobj.Path = Path.Path([c])
        postables = [self.docobj]

        args = "--no-header --line-numbers --no-show-editor"
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        result = gcode.splitlines()[5]
        expected = "N160  G0 X10.000 Y20.000 Z30.000"
        self.assertEqual(result, expected)
    def test090(self):
        """
        Test comment
        """

        c = Path.Command("(comment)")

        self.docobj.Path = Path.Path([c])
        postables = [self.docobj]

        args = "--no-header --no-show-editor"
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        result = gcode.splitlines()[5]
        expected = "(comment)"
        self.assertEqual(result, expected)
    def test070(self):
        """
        Test axis modal
        Suppress the axis coordinate if the same as previous
        """
        c = Path.Command("G0 X10 Y20 Z30")
        c1 = Path.Command("G0 X10 Y30 Z30")

        self.docobj.Path = Path.Path([c, c1])
        postables = [self.docobj]

        args = "--no-header --axis-modal --no-show-editor"
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        result = gcode.splitlines()[6]
        expected = "G0 Y30.000"
        self.assertEqual(result, expected)
    def test050(self):
        """
        Test inches
        """

        c = Path.Command("G0 X10 Y20 Z30")
        self.docobj.Path = Path.Path([c])
        postables = [self.docobj]

        args = "--no-header --inches --no-show-editor"
        gcode = postprocessor.export(postables, "gcode.tmp", args)
        self.assertEqual(gcode.splitlines()[2], "G20")

        result = gcode.splitlines()[5]
        expected = "G0 X0.3937 Y0.7874 Z1.1811"
        self.assertEqual(result, expected)