Path: simplify the test fixture

Instead of creating a file from scratch, a test file
is included.  Post processing the file from the gui
should give the same results as the test script.
This commit is contained in:
sliptonic
2017-07-06 11:11:37 -05:00
parent c359ba6060
commit 7ace55029e
5 changed files with 109 additions and 58 deletions

View File

@@ -84,7 +84,9 @@ SET(PathScripts_SRCS
SET(PathTests_SRCS
PathTests/__init__.py
PathTests/boxtest.fcstd
PathTests/PathTestUtils.py
PathTests/test_centroid_00.ngc
PathTests/test_linuxcnc_00.ngc
PathTests/TestPathCore.py
PathTests/TestPathDepthParams.py

View File

@@ -23,72 +23,39 @@
# ***************************************************************************
import FreeCAD
import Path
import PathScripts
import PathScripts.PathContour
import PathScripts.PathJob
import PathScripts.PathPost
import PathScripts.PathToolController
import PathScripts.PathUtils
import PathScripts.PathUtil
import difflib
import unittest
class PathPostTestCases(unittest.TestCase):
def setUp(self):
self.doc = FreeCAD.newDocument("PathPostTest")
box = self.doc.addObject("Part::Box", "Box")
# Create job and setup tool library + default tool
self.job = self.doc.addObject("Path::FeatureCompoundPython", "Job")
PathScripts.PathJob.ObjectPathJob(self.job, box, None)
PathScripts.PathToolController.CommandPathToolController.Create(self.job.Name, False)
tool1 = Path.Tool()
tool1.Diameter = 5.0
tool1.Name = "Default Tool"
tool1.CuttingEdgeHeight = 15.0
tool1.ToolType = "EndMill"
tool1.Material = "HighSpeedSteel"
tc = FreeCAD.ActiveDocument.addObject("Path::FeaturePython",'TC')
PathScripts.PathToolController.ToolController(tc)
PathScripts.PathUtils.addToJob(tc, "Job")
tc.Tool = tool1
tc.ToolNumber = 2
self.failUnless(True)
self.doc.getObject("TC").ToolNumber = 2
self.doc.recompute()
contour = self.doc.addObject("Path::FeaturePython", "Contour")
PathScripts.PathContour.ObjectContour(contour)
contour.Active = True
contour.ClearanceHeight = 20.0
contour.StepDown = 1.0
contour.StartDepth= 10.0
contour.FinalDepth=0.0
contour.SafeHeight = 12.0
contour.OffsetExtra = 0.0
contour.Direction = 'CW'
contour.ToolController = tc
contour.UseComp = False
PathScripts.PathUtils.addToJob(contour)
PathScripts.PathContour.ObjectContour.setDepths(contour.Proxy, contour)
self.doc.recompute()
testfile = FreeCAD.getHomePath() + 'Mod/Path/PathTests/boxtest.fcstd'
self.doc = FreeCAD.open(testfile)
self.job = FreeCAD.ActiveDocument.getObject("Job")
self.postlist = []
currTool = None
for obj in self.job.Group:
if not isinstance(obj.Proxy, PathScripts.PathToolController.ToolController):
tc = PathScripts.PathUtil.toolControllerForOp(obj)
if tc is not None:
if tc.ToolNumber != currTool:
self.postlist.append(tc)
self.postlist.append(obj)
def tearDown(self):
FreeCAD.closeDocument("PathPostTest")
FreeCAD.closeDocument("boxtest")
def testLinuxCNC(self):
# first create something to generate a path for
self.job.PostProcessor = 'linuxcnc'
self.job.PostProcessorArgs = '--no-header --no-line-numbers --no-comments --no-show-editor --output-precision=2'
post = PathScripts.PathPost.CommandPathPost()
(fail, gcode) = post.exportObjectsWith([self.job], self.job, False)
self.assertFalse(fail)
from PathScripts.post import linuxcnc_post as postprocessor
args = '--no-header --no-line-numbers --no-comments --no-show-editor --output-precision=2'
gcode = postprocessor.export(self.postlist, 'gcode.tmp', args)
referenceFile = FreeCAD.getHomePath() + 'Mod/Path/PathTests/test_linuxcnc_00.ngc'
with open(referenceFile, 'r') as fp:
@@ -99,8 +66,24 @@ class PathPostTestCases(unittest.TestCase):
with open('tab.tmp', 'w') as fp:
fp.write(gcode)
if gcode != refGCode:
msg = ''.join(difflib.ndiff(gcode.splitlines(True), refGCode.splitlines(True)))
self.fail("linuxcnc output doesn't match: " + msg)
def testCentroid(self):
from PathScripts.post import centroid_post as postprocessor
args = '--no-header --no-line-numbers --no-comments --no-show-editor --axis-precision=2 --feed-precision=2'
gcode = postprocessor.export(self.postlist, 'gcode.tmp', args)
referenceFile = FreeCAD.getHomePath() + 'Mod/Path/PathTests/test_centroid_00.ngc'
with open(referenceFile, 'r') as fp:
refGCode = fp.read()
# Use if this test fails in order to have a real good look at the changes
if False:
with open('tab.tmp', 'w') as fp:
fp.write(gcode)
if gcode != refGCode:
msg = ''.join(difflib.ndiff(gcode.splitlines(True), refGCode.splitlines(True)))
self.fail("linuxcnc output doesn't match: " + msg)

Binary file not shown.

View File

@@ -0,0 +1,69 @@
G90 G80 G40 G49
G53 G00 G17
G20
;Default_Tool
M6 T2
M3 S0
;Contour
;Uncompensated Tool Path
G0 Z15.00
G90
G17
G0 Z15.00
G0 X10.00 Y10.00
G0 Z10.00
G1 X10.00 Y10.00 Z9.00
G1 X10.00 Y0.00 Z9.00
G1 X0.00 Y0.00 Z9.00
G1 X0.00 Y10.00 Z9.00
G1 X10.00 Y10.00 Z9.00
G1 X10.00 Y10.00 Z8.00
G1 X10.00 Y0.00 Z8.00
G1 X0.00 Y0.00 Z8.00
G1 X0.00 Y10.00 Z8.00
G1 X10.00 Y10.00 Z8.00
G1 X10.00 Y10.00 Z7.00
G1 X10.00 Y0.00 Z7.00
G1 X0.00 Y0.00 Z7.00
G1 X0.00 Y10.00 Z7.00
G1 X10.00 Y10.00 Z7.00
G1 X10.00 Y10.00 Z6.00
G1 X10.00 Y0.00 Z6.00
G1 X0.00 Y0.00 Z6.00
G1 X0.00 Y10.00 Z6.00
G1 X10.00 Y10.00 Z6.00
G1 X10.00 Y10.00 Z5.00
G1 X10.00 Y0.00 Z5.00
G1 X0.00 Y0.00 Z5.00
G1 X0.00 Y10.00 Z5.00
G1 X10.00 Y10.00 Z5.00
G1 X10.00 Y10.00 Z4.00
G1 X10.00 Y0.00 Z4.00
G1 X0.00 Y0.00 Z4.00
G1 X0.00 Y10.00 Z4.00
G1 X10.00 Y10.00 Z4.00
G1 X10.00 Y10.00 Z3.00
G1 X10.00 Y0.00 Z3.00
G1 X0.00 Y0.00 Z3.00
G1 X0.00 Y10.00 Z3.00
G1 X10.00 Y10.00 Z3.00
G1 X10.00 Y10.00 Z2.00
G1 X10.00 Y0.00 Z2.00
G1 X0.00 Y0.00 Z2.00
G1 X0.00 Y10.00 Z2.00
G1 X10.00 Y10.00 Z2.00
G1 X10.00 Y10.00 Z1.00
G1 X10.00 Y0.00 Z1.00
G1 X0.00 Y0.00 Z1.00
G1 X0.00 Y10.00 Z1.00
G1 X10.00 Y10.00 Z1.00
G1 X10.00 Y10.00 Z0.00
G1 X10.00 Y0.00 Z0.00
G1 X0.00 Y0.00 Z0.00
G1 X0.00 Y10.00 Z0.00
G1 X10.00 Y10.00 Z0.00
G0 Z15.00
M5 M25
G49 H0
G90 G80 G40 G49
M99

View File

@@ -1,9 +1,6 @@
G17 G90
G21
(Default_Tool)
M6 T1
M3 S0.00
(TC)
M6 T2
M3 S0.00
(Contour)
@@ -11,9 +8,9 @@ M3 S0.00
G0 Z15.00
G90
G17
G0 X0.00 Y0.00 Z15.00
G0 X10.00 Y10.00 Z15.00
G0 X10.00 Y10.00 Z10.00
G0 Z15.00
G0 X10.00 Y10.00
G0 Z10.00
G1 X10.00 Y10.00 Z9.00
G1 X10.00 Y0.00 Z9.00
G1 X0.00 Y0.00 Z9.00