From a437939b77eb0704f6c2ff7f19449ce7dbe14cf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20B=C3=A4hr?= Date: Sat, 7 Jan 2023 21:54:28 +0100 Subject: [PATCH] PD: Add tests loading InvoluteGears created with v0.20 This is in preparation for new features, to ensure we don't break existing documents created with FreeCAD-0.20. The fixtures have been created with the official mac build of FreeCAD-0.20.1 using mostly default parametrization -- only the number of teeth has been reduced in order to keep the file size low. --- src/Mod/PartDesign/CMakeLists.txt | 16 ++++++++- .../Fixtures/InternalInvoluteGear_v0-20.FCStd | Bin 0 -> 13245 bytes .../Fixtures/InvoluteGear_v0-20.FCStd | Bin 0 -> 14974 bytes .../PartDesignTests/TestInvoluteGear.py | 33 ++++++++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/Mod/PartDesign/PartDesignTests/Fixtures/InternalInvoluteGear_v0-20.FCStd create mode 100644 src/Mod/PartDesign/PartDesignTests/Fixtures/InvoluteGear_v0-20.FCStd diff --git a/src/Mod/PartDesign/CMakeLists.txt b/src/Mod/PartDesign/CMakeLists.txt index b1f8beae44..a73b83499e 100644 --- a/src/Mod/PartDesign/CMakeLists.txt +++ b/src/Mod/PartDesign/CMakeLists.txt @@ -55,6 +55,11 @@ set(PartDesign_TestScripts PartDesignTests/TestInvoluteGear.py ) +set(PartDesign_TestFixtures + PartDesignTests/Fixtures/InvoluteGear_v0-20.FCStd + PartDesignTests/Fixtures/InternalInvoluteGear_v0-20.FCStd +) + set(PartDesign_GearScripts fcgear/__init__.py fcgear/fcgear.py @@ -85,6 +90,7 @@ add_custom_target(PartDesignScripts ALL SOURCES ${PartDesign_Scripts} ${PartDesign_OtherScripts} ${PartDesign_TestScripts} + ${PartDesign_TestFixtures} ${PartDesign_GearScripts} ${PartDesign_SprocketScripts} ) @@ -95,6 +101,7 @@ fc_target_copy_resource(PartDesignScripts ${PartDesign_Scripts} ${PartDesign_OtherScripts} ${PartDesign_TestScripts} + ${PartDesign_TestFixtures} ${PartDesign_GearScripts} ${PartDesign_SprocketScripts} ) @@ -119,7 +126,14 @@ INSTALL( DESTINATION Mod/PartDesign/PartDesignTests ) - + +INSTALL( + FILES + ${PartDesign_TestFixtures} + DESTINATION + Mod/PartDesign/PartDesignTests/Fixtures + ) + INSTALL( FILES ${PartDesign_GearScripts} diff --git a/src/Mod/PartDesign/PartDesignTests/Fixtures/InternalInvoluteGear_v0-20.FCStd b/src/Mod/PartDesign/PartDesignTests/Fixtures/InternalInvoluteGear_v0-20.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..9951e0cad9e1df0021c40ebe575a642291390e3d GIT binary patch literal 13245 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 literal 0 HcmV?d00001 diff --git a/src/Mod/PartDesign/PartDesignTests/Fixtures/InvoluteGear_v0-20.FCStd b/src/Mod/PartDesign/PartDesignTests/Fixtures/InvoluteGear_v0-20.FCStd new file mode 100644 index 0000000000000000000000000000000000000000..110fd1e29524f30d8930b8e5b50d3462dc0d1f87 GIT binary patch literal 14974 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 X2mny^nFJXi>S$sjBp^)mU#9tgDb#G~ literal 0 HcmV?d00001 diff --git a/src/Mod/PartDesign/PartDesignTests/TestInvoluteGear.py b/src/Mod/PartDesign/PartDesignTests/TestInvoluteGear.py index 13f6a931d0..02a2518fc9 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestInvoluteGear.py +++ b/src/Mod/PartDesign/PartDesignTests/TestInvoluteGear.py @@ -20,11 +20,14 @@ #*************************************************************************** import unittest +import pathlib import FreeCAD from Part import makeCircle, Precision import InvoluteGearFeature +FIXTURE_PATH = pathlib.Path(__file__).parent / "Fixtures" + class TestInvoluteGear(unittest.TestCase): def setUp(self): self.Doc = FreeCAD.newDocument("PartDesignTestInvoluteGear") @@ -108,6 +111,36 @@ class TestInvoluteGear(unittest.TestCase): self.assertSuccessfulRecompute() self.assertSolid(pocket.Shape) + def testRecomputeExternalGearFromV020(self): + FreeCAD.closeDocument(self.Doc.Name) # this was created in setUp(self) + self.Doc = FreeCAD.openDocument(str(FIXTURE_PATH / "InvoluteGear_v0-20.FCStd")) + created_with = f"created with {self.Doc.getProgramVersion()}" + gear = self.Doc.InvoluteGear # from fixture + fixture_length = 187.752 # from fixture, rounded to micrometer + length_delta = 0.001 + self.assertClosedWire(gear.Shape) # no recompute yet, i.e. check original + self.assertAlmostEqual(fixture_length, gear.Shape.Length, delta=length_delta, + msg=f"Total wire length does not match fixture for gear {created_with}") + gear.enforceRecompute() + self.assertSuccessfulRecompute(gear, msg=f"Cannot recompute gear {created_with}") + self.assertAlmostEqual(fixture_length, gear.Shape.Length, delta=length_delta, + msg=f"Total wire length changed after recomputing gear {created_with}") + + def testRecomputeInternalGearFromV020(self): + FreeCAD.closeDocument(self.Doc.Name) # this was created in setUp(self) + self.Doc = FreeCAD.openDocument(str(FIXTURE_PATH / "InternalInvoluteGear_v0-20.FCStd")) + created_with = f"created with {self.Doc.getProgramVersion()}" + gear = self.Doc.InvoluteGear # from fixture + fixture_length = 165.408 # from fixture, rounded to micrometer + length_delta = 0.001 + self.assertClosedWire(gear.Shape) # no recompute yet, i.e. check original + self.assertAlmostEqual(fixture_length, gear.Shape.Length, delta=length_delta, + msg=f"Total wire length does not match fixture for gear {created_with}") + gear.enforceRecompute() + self.assertSuccessfulRecompute(gear, msg=f"Cannot recompute gear {created_with}") + self.assertAlmostEqual(fixture_length, gear.Shape.Length, delta=length_delta, + msg=f"Total wire length changed after recomputing gear {created_with}") + def assertSuccessfulRecompute(self, *objs, msg=None): if (len(objs) == 0): self.Doc.recompute()