| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | import FreeCAD |
| | import Path |
| | from Path.Main.Sanity import ReportGenerator, Sanity |
| | from Path.Main.Sanity.ImageBuilder import ( |
| | DummyImageBuilder, |
| | ImageBuilderFactory, |
| | ImageBuilder, |
| | ) |
| | import os |
| | import Path.Post.Command as PathPost |
| | from Path.Post.Processor import PostProcessor |
| | import unittest |
| | from unittest.mock import patch, MagicMock |
| | import urllib |
| | import tempfile |
| | from CAMTests.PathTestUtils import PathTestBase |
| |
|
| |
|
| | class TestCAMSanity(PathTestBase): |
| | @classmethod |
| | def setUpClass(cls): |
| | FreeCAD.ConfigSet("SuppressRecomputeRequiredDialog", "True") |
| | cls.doc = FreeCAD.open(FreeCAD.getHomePath() + "/Mod/CAM/CAMTests/boxtest.fcstd") |
| | FreeCAD.ConfigSet("SuppressRecomputeRequiredDialog", "") |
| | cls.job = cls.doc.getObject("Job") |
| |
|
| | @classmethod |
| | def tearDownClass(cls): |
| | FreeCAD.closeDocument("boxtest") |
| |
|
| | def setUp(self): |
| | self.temp_file = tempfile.NamedTemporaryFile() |
| |
|
| | def tearDown(self): |
| | pass |
| |
|
| | def test00(self): |
| | """Test no output location""" |
| | with self.assertRaises(TypeError): |
| | S = Sanity.CAMSanity(self.job) |
| |
|
| | def test010(self): |
| | |
| | with patch( |
| | "Path.Main.Sanity.ImageBuilder.ImageBuilderFactory.get_image_builder" |
| | ) as mock_factory: |
| | dummy_builder = DummyImageBuilder(self.temp_file.name) |
| | mock_factory.return_value = dummy_builder |
| | S = Sanity.CAMSanity(self.job, output_file=self.temp_file.name) |
| | self.assertTrue(os.path.isdir(S.filelocation)) |
| | self.assertEqual(self.temp_file.name, S.output_file) |
| |
|
| | def test020(self): |
| | """Test erroneous output location""" |
| | filename = "/tmpXXXX/THIS_DOESN'T_EXIST" |
| | with self.assertRaises(ValueError): |
| | S = Sanity.CAMSanity(self.job, output_file=filename) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | |
| |
|
| | |
| | |
| | |
| |
|
| | def test050(self): |
| | """Test base data""" |
| | with patch( |
| | "Path.Main.Sanity.ImageBuilder.ImageBuilderFactory.get_image_builder" |
| | ) as mock_factory: |
| | dummy_builder = DummyImageBuilder(self.temp_file.name) |
| | mock_factory.return_value = dummy_builder |
| | S = Sanity.CAMSanity(self.job, output_file=self.temp_file.name) |
| | data = S._baseObjectData() |
| | self.assertIsInstance(data, dict) |
| | self.assertIn("baseimage", data) |
| | self.assertIn("bases", data) |
| |
|
| | def test060(self): |
| | """Test design data""" |
| | with patch( |
| | "Path.Main.Sanity.ImageBuilder.ImageBuilderFactory.get_image_builder" |
| | ) as mock_factory: |
| | dummy_builder = DummyImageBuilder(self.temp_file.name) |
| | mock_factory.return_value = dummy_builder |
| | S = Sanity.CAMSanity(self.job, output_file=self.temp_file.name) |
| | data = S._designData() |
| | self.assertIsInstance(data, dict) |
| | self.assertIn("FileName", data) |
| | self.assertIn("LastModifiedDate", data) |
| | self.assertIn("Customer", data) |
| | self.assertIn("Designer", data) |
| | self.assertIn("JobDescription", data) |
| | self.assertIn("JobLabel", data) |
| | self.assertIn("Sequence", data) |
| | self.assertIn("JobType", data) |
| |
|
| | def test070(self): |
| | """Test tool data""" |
| | with patch( |
| | "Path.Main.Sanity.ImageBuilder.ImageBuilderFactory.get_image_builder" |
| | ) as mock_factory: |
| | dummy_builder = DummyImageBuilder(self.temp_file.name) |
| | mock_factory.return_value = dummy_builder |
| | S = Sanity.CAMSanity(self.job, output_file=self.temp_file.name) |
| | data = S._toolData() |
| | self.assertIn("squawkData", data) |
| |
|
| | for key in data.keys(): |
| | if isinstance(key, int): |
| | val = data["key"] |
| | self.assertIsInstance(val, dict) |
| | self.assertIn("bitShape", val) |
| | self.assertIn("description", val) |
| | self.assertIn("manufacturer", val) |
| | self.assertIn("url", val) |
| | self.assertIn("inspectionNotes", val) |
| | self.assertIn("diameter", val) |
| | self.assertIn("shape", val) |
| | self.assertIn("partNumber", val) |
| |
|
| | def test080(self): |
| | """Test run data""" |
| | with patch( |
| | "Path.Main.Sanity.ImageBuilder.ImageBuilderFactory.get_image_builder" |
| | ) as mock_factory: |
| | dummy_builder = DummyImageBuilder(self.temp_file.name) |
| | mock_factory.return_value = dummy_builder |
| | S = Sanity.CAMSanity(self.job, output_file=self.temp_file.name) |
| | data = S._runData() |
| | self.assertIsInstance(data, dict) |
| | self.assertIn("cycletotal", data) |
| | self.assertIn("jobMinZ", data) |
| | self.assertIn("jobMaxZ", data) |
| | self.assertIn("jobDescription", data) |
| | self.assertIn("squawkData", data) |
| | self.assertIn("operations", data) |
| |
|
| | def test090(self): |
| | """Test output data""" |
| | with patch( |
| | "Path.Main.Sanity.ImageBuilder.ImageBuilderFactory.get_image_builder" |
| | ) as mock_factory: |
| | dummy_builder = DummyImageBuilder(self.temp_file.name) |
| | mock_factory.return_value = dummy_builder |
| | S = Sanity.CAMSanity(self.job, output_file=self.temp_file.name) |
| | data = S._outputData() |
| | self.assertIsInstance(data, dict) |
| | self.assertIn("lastpostprocess", data) |
| | self.assertIn("lastgcodefile", data) |
| | self.assertIn("optionalstops", data) |
| | self.assertIn("programmer", data) |
| | self.assertIn("machine", data) |
| | self.assertIn("postprocessor", data) |
| | self.assertIn("postprocessorFlags", data) |
| | self.assertIn("filesize", data) |
| | self.assertIn("linecount", data) |
| | self.assertIn("outputfilename", data) |
| | self.assertIn("squawkData", data) |
| |
|
| | def test100(self): |
| | """Test fixture data""" |
| | with patch( |
| | "Path.Main.Sanity.ImageBuilder.ImageBuilderFactory.get_image_builder" |
| | ) as mock_factory: |
| | dummy_builder = DummyImageBuilder(self.temp_file.name) |
| | mock_factory.return_value = dummy_builder |
| | S = Sanity.CAMSanity(self.job, output_file=self.temp_file.name) |
| | data = S._fixtureData() |
| | self.assertIsInstance(data, dict) |
| | self.assertIn("fixtures", data) |
| | self.assertIn("orderBy", data) |
| | self.assertIn("datumImage", data) |
| | self.assertIn("squawkData", data) |
| |
|
| | def test110(self): |
| | """Test stock data""" |
| | with patch( |
| | "Path.Main.Sanity.ImageBuilder.ImageBuilderFactory.get_image_builder" |
| | ) as mock_factory: |
| | dummy_builder = DummyImageBuilder(self.temp_file.name) |
| | mock_factory.return_value = dummy_builder |
| | S = Sanity.CAMSanity(self.job, output_file=self.temp_file.name) |
| | data = S._stockData() |
| | self.assertIsInstance(data, dict) |
| | self.assertIn("xLen", data) |
| | self.assertIn("yLen", data) |
| | self.assertIn("zLen", data) |
| | self.assertIn("material", data) |
| | self.assertIn("stockImage", data) |
| | self.assertIn("squawkData", data) |
| |
|
| | def test120(self): |
| | """Test squawk data""" |
| | with patch( |
| | "Path.Main.Sanity.ImageBuilder.ImageBuilderFactory.get_image_builder" |
| | ) as mock_factory: |
| | dummy_builder = DummyImageBuilder(self.temp_file.name) |
| | mock_factory.return_value = dummy_builder |
| | S = Sanity.CAMSanity(self.job, output_file=self.temp_file.name) |
| | data = S.squawk( |
| | "CAMSanity", |
| | "Test Message", |
| | squawkType="TIP", |
| | ) |
| | self.assertIsInstance(data, dict) |
| | self.assertIn("Date", data) |
| | self.assertIn("Operator", data) |
| | self.assertIn("Note", data) |
| | self.assertIn("squawkType", data) |
| | self.assertIn("squawkIcon", data) |
| |
|
| | def test130(self): |
| | """Test tool data""" |
| | with patch( |
| | "Path.Main.Sanity.ImageBuilder.ImageBuilderFactory.get_image_builder" |
| | ) as mock_factory: |
| | dummy_builder = DummyImageBuilder(self.temp_file.name) |
| | mock_factory.return_value = dummy_builder |
| | S = Sanity.CAMSanity(self.job, output_file=self.temp_file.name) |
| | data = S._toolData() |
| | self.assertIsInstance(data, dict) |
| | self.assertIn("squawkData", data) |
| |
|
| | for key, val in data.items(): |
| | if key == "squawkData": |
| | continue |
| | else: |
| | self.assertIsInstance(val, dict) |
| | self.assertIn("bitShape", val) |
| | self.assertIn("description", val) |
| | self.assertIn("manufacturer", val) |
| | self.assertIn("url", val) |
| | self.assertIn("inspectionNotes", val) |
| | self.assertIn("diameter", val) |
| | self.assertIn("shape", val) |
| | self.assertIn("partNumber", val) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| |
|
| | |
| | |
| | |
| |
|
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| |
|
| | |
| |
|
| | |
| | |
| | |
| |
|
| | |
| | |
| |
|
| | |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| |
|
| | |
| | |
| |
|
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | |
| |
|
| | |
| | |
| | |
| |
|