| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | import FreeCAD |
| |
|
| | import Path |
| | import CAMTests.PathTestUtils as PathTestUtils |
| | from Path.Post.Processor import PostProcessorFactory |
| | import Path.Dressup.Utils as PathDressup |
| |
|
| |
|
| | Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) |
| | Path.Log.trackModule(Path.Log.thisModule()) |
| |
|
| |
|
| | class TestDressupPost(PathTestUtils.PathTestBase): |
| | """Test the test_post.py postprocessor command line arguments.""" |
| |
|
| | @classmethod |
| | def setUpClass(cls): |
| | """setUpClass()... |
| | |
| | This method is called upon instantiation of this test class. Add code |
| | and objects here that are needed for the duration of the test() methods |
| | in this class. In other words, set up the 'global' test environment |
| | here; use the `setUp()` method to set up a 'local' test environment. |
| | This method does not have access to the class `self` reference, but it |
| | is able to call static methods within this same class. |
| | """ |
| | FreeCAD.ConfigSet("SuppressRecomputeRequiredDialog", "True") |
| | cls.doc = FreeCAD.open(FreeCAD.getHomePath() + "/Mod/CAM/CAMTests/dressuptest.FCStd") |
| | cls.job = cls.doc.getObject("Job") |
| | cls.post = PostProcessorFactory.get_post_processor(cls.job, "test") |
| |
|
| | |
| | |
| | |
| |
|
| | cls.ops = cls.job.Operations.Group |
| |
|
| | @classmethod |
| | def tearDownClass(cls): |
| | """tearDownClass()... |
| | |
| | This method is called prior to destruction of this test class. Add |
| | code and objects here that cleanup the test environment after the |
| | test() methods in this class have been executed. This method does |
| | not have access to the class `self` reference. This method is able |
| | to call static methods within this same class. |
| | """ |
| | FreeCAD.closeDocument(cls.doc.Name) |
| | FreeCAD.ConfigSet("SuppressRecomputeRequiredDialog", "") |
| |
|
| | |
| |
|
| | def setUp(self): |
| | """setUp()... |
| | |
| | This method is called prior to each `test()` method. Add code and |
| | objects here that are needed for multiple `test()` methods. |
| | """ |
| | |
| | self.maxDiff = None |
| | |
| | |
| | |
| | self.post.reinitialize() |
| |
|
| | def tearDown(self): |
| | """tearDown()... |
| | |
| | This method is called after each test() method. Add cleanup instructions here. |
| | Such cleanup instructions will likely undo those in the setUp() method. |
| | """ |
| | pass |
| |
|
| | def test001(self): |
| | |
| |
|
| | self.post.values["OUTPUT_COMMENTS"] = True |
| | self.post.values["SHOW_OPERATION_LABELS"] = True |
| |
|
| | |
| |
|
| | for op in self.ops: |
| | PathDressup.baseOp(op).Active = False |
| |
|
| | |
| |
|
| | gcode = self.post.export()[0][1].splitlines() |
| |
|
| | for op in self.ops: |
| | expected = "(Begin operation: " + op.Label + ")" |
| | self.assertNotIn(expected, gcode) |
| |
|
| | |
| |
|
| | for op in self.ops: |
| | PathDressup.baseOp(op).Active = True |
| |
|
| | |
| |
|
| | gcode = self.post.export()[0][1].splitlines() |
| |
|
| | for op in self.ops: |
| | expected = "(Begin operation: " + op.Label + ")" |
| | self.assertIn(expected, gcode) |
| |
|
| | def test002(self): |
| | |
| |
|
| | self.post.values["OUTPUT_TOOL_CHANGE"] = True |
| |
|
| | gcode = self.post.export()[0][1].splitlines() |
| |
|
| | self.assertIn("M6 T1", gcode) |
| | self.assertIn("M6 T2", gcode) |
| | self.assertIn("M6 T3", gcode) |
| | self.assertIn("M6 T4", gcode) |
| |
|
| | def test003(self): |
| | |
| |
|
| | self.post.values["ENABLE_COOLANT"] = True |
| |
|
| | for op in self.ops: |
| | base = PathDressup.baseOp(op) |
| | base.CoolantMode = "Mist" |
| |
|
| | gcode = self.post.export()[0][1].splitlines() |
| |
|
| | self.assertIn("M7", gcode) |
| | self.assertIn("M9", gcode) |
| |
|
| | base.CoolantMode = "None" |
| |
|