From d68ca08b5436f8310650f5ebb3c64656cd83ea41 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Tue, 17 Mar 2020 21:09:39 +0100 Subject: [PATCH] FEM: unit test, get rid of ActiveDocument --- src/Mod/Fem/femtest/app/test_ccxtools.py | 41 ++++++++----------- src/Mod/Fem/femtest/app/test_common.py | 11 +---- src/Mod/Fem/femtest/app/test_femimport.py | 11 +---- src/Mod/Fem/femtest/app/test_material.py | 9 +--- src/Mod/Fem/femtest/app/test_mesh.py | 18 +------- src/Mod/Fem/femtest/app/test_object.py | 28 ++++--------- src/Mod/Fem/femtest/app/test_result.py | 9 +--- .../Fem/femtest/app/test_solverframework.py | 35 +++++++--------- 8 files changed, 46 insertions(+), 116 deletions(-) diff --git a/src/Mod/Fem/femtest/app/test_ccxtools.py b/src/Mod/Fem/femtest/app/test_ccxtools.py index 5909295797..3e09c8fc82 100644 --- a/src/Mod/Fem/femtest/app/test_ccxtools.py +++ b/src/Mod/Fem/femtest/app/test_ccxtools.py @@ -40,15 +40,8 @@ class TestCcxTools(unittest.TestCase): self ): # setUp is executed before every test - # setting up a document to hold the tests self.doc_name = self.__class__.__name__ - if FreeCAD.ActiveDocument: - if FreeCAD.ActiveDocument.Name != self.doc_name: - FreeCAD.newDocument(self.doc_name) - else: - FreeCAD.newDocument(self.doc_name) - FreeCAD.setActiveDocument(self.doc_name) - self.active_doc = FreeCAD.ActiveDocument + self.document = FreeCAD.newDocument(self.doc_name) # more inits self.mesh_name = "Mesh" @@ -73,7 +66,7 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.boxanalysis import setup_frequency as setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "frequency" base_name = "cube_frequency" res_obj_name = "CCX_Mode1_Results" @@ -105,7 +98,7 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.boxanalysis import setup_static as setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "ccxtools static" base_name = "cube_static" res_obj_name = "CCX_Results" @@ -137,14 +130,14 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.ccx_cantilever_std import setup_cantileverhexa20faceload as setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "canti ccx faceload hexa20" base_name = "canti_ccx_faceload_hexa20" analysis_dir = testtools.get_unit_test_tmp_dir( self.temp_dir, ("FEM_" + base_name), ) - fcc_print(self.active_doc.Objects) + fcc_print(self.document.Objects) # test input file writing self.input_file_writing_test( test_name=test_name, @@ -158,7 +151,7 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.constraint_contact_shell_shell import setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "constraint contact shell shell" base_name = "constraint_contact_shell_shell" analysis_dir = testtools.get_unit_test_tmp_dir( @@ -179,7 +172,7 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.constraint_contact_solid_solid import setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "constraint contact solid solid" base_name = "constraint_contact_solid_solid" analysis_dir = testtools.get_unit_test_tmp_dir( @@ -202,7 +195,7 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.constraint_tie import setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "constraint tie" base_name = "constraint_tie" analysis_dir = testtools.get_unit_test_tmp_dir( @@ -223,7 +216,7 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.material_multiple_twoboxes import setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "multiple material" base_name = "mat_multiple" analysis_dir = testtools.get_unit_test_tmp_dir( @@ -244,7 +237,7 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.material_nl_platewithhole import setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "nonlinear material" base_name = "mat_nonlinear" analysis_dir = testtools.get_unit_test_tmp_dir( @@ -265,7 +258,7 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.thermomech_bimetall import setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "thermomech bimetall" base_name = "thermomech_bimetall" analysis_dir = testtools.get_unit_test_tmp_dir( @@ -286,7 +279,7 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.thermomech_flow1d import setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "Flow1D" base_name = "Flow1D_thermomech" res_obj_name = "CCX_Time1_0_Results" @@ -318,7 +311,7 @@ class TestCcxTools(unittest.TestCase): ): # set up from femexamples.thermomech_spine import setup - setup(self.active_doc, "ccxtools") + setup(self.document, "ccxtools") test_name = "thermomechanical" base_name = "spine_thermomech" res_obj_name = "CCX_Results" @@ -359,8 +352,8 @@ class TestCcxTools(unittest.TestCase): .format(test_name) ) - analysis = self.active_doc.Analysis - solver_object = self.active_doc.CalculiXccxTools + analysis = self.document.Analysis + solver_object = self.document.CalculiXccxTools fea = ccxtools.FemToolsCcx(analysis, solver_object, test_mode=True) fea.update_objects() @@ -404,7 +397,7 @@ class TestCcxTools(unittest.TestCase): "Save FreeCAD file for {} to {}..." .format(test_name, save_fc_file) ) - self.active_doc.saveAs(save_fc_file) + self.document.saveAs(save_fc_file) fcc_print( "\n--------------- " @@ -481,7 +474,7 @@ class TestCcxTools(unittest.TestCase): "Save FreeCAD file for {} to {}..." .format(test_name, save_fc_file) ) - self.active_doc.saveAs(save_fc_file) + self.document.saveAs(save_fc_file) fcc_print("--------------- End of {} -------------------".format(test_name)) diff --git a/src/Mod/Fem/femtest/app/test_common.py b/src/Mod/Fem/femtest/app/test_common.py index 69a866d328..765b4a6690 100644 --- a/src/Mod/Fem/femtest/app/test_common.py +++ b/src/Mod/Fem/femtest/app/test_common.py @@ -37,15 +37,8 @@ class TestFemCommon(unittest.TestCase): self ): # setUp is executed before every test - # setting up a document to hold the tests self.doc_name = self.__class__.__name__ - if FreeCAD.ActiveDocument: - if FreeCAD.ActiveDocument.Name != self.doc_name: - FreeCAD.newDocument(self.doc_name) - else: - FreeCAD.newDocument(self.doc_name) - FreeCAD.setActiveDocument(self.doc_name) - self.active_doc = FreeCAD.ActiveDocument + self.document = FreeCAD.newDocument(self.doc_name) def test_00print( self @@ -60,7 +53,7 @@ class TestFemCommon(unittest.TestCase): def test_adding_refshaps( self ): - doc = self.active_doc + doc = self.document slab = doc.addObject("Part::Plane", "Face") slab.Length = 500.00 slab.Width = 500.00 diff --git a/src/Mod/Fem/femtest/app/test_femimport.py b/src/Mod/Fem/femtest/app/test_femimport.py index e372fd7f92..abb16ce5cf 100644 --- a/src/Mod/Fem/femtest/app/test_femimport.py +++ b/src/Mod/Fem/femtest/app/test_femimport.py @@ -84,15 +84,8 @@ class TestObjectExistance(unittest.TestCase): self ): # setUp is executed before every test - # setting up a document to hold the tests self.doc_name = self.__class__.__name__ - if FreeCAD.ActiveDocument: - if FreeCAD.ActiveDocument.Name != self.doc_name: - FreeCAD.newDocument(self.doc_name) - else: - FreeCAD.newDocument(self.doc_name) - FreeCAD.setActiveDocument(self.doc_name) - self.active_doc = FreeCAD.ActiveDocument + self.document = FreeCAD.newDocument(self.doc_name) def test_00print( self @@ -167,7 +160,7 @@ class TestObjectExistance(unittest.TestCase): expected_len = len(expected_obj_types) expected_obj_types = sorted(expected_obj_types) - doc = self.active_doc + doc = self.document # get the supportedTypes for FEM module diff --git a/src/Mod/Fem/femtest/app/test_material.py b/src/Mod/Fem/femtest/app/test_material.py index d862935a01..30dbae7961 100644 --- a/src/Mod/Fem/femtest/app/test_material.py +++ b/src/Mod/Fem/femtest/app/test_material.py @@ -37,15 +37,8 @@ class TestMaterialUnits(unittest.TestCase): self ): # setUp is executed before every test - # setting up a document to hold the tests self.doc_name = self.__class__.__name__ - if FreeCAD.ActiveDocument: - if FreeCAD.ActiveDocument.Name != self.doc_name: - FreeCAD.newDocument(self.doc_name) - else: - FreeCAD.newDocument(self.doc_name) - FreeCAD.setActiveDocument(self.doc_name) - self.active_doc = FreeCAD.ActiveDocument + self.document = FreeCAD.newDocument(self.doc_name) def test_00print( self diff --git a/src/Mod/Fem/femtest/app/test_mesh.py b/src/Mod/Fem/femtest/app/test_mesh.py index 5a0d3f8efd..cbf8d1bdeb 100644 --- a/src/Mod/Fem/femtest/app/test_mesh.py +++ b/src/Mod/Fem/femtest/app/test_mesh.py @@ -39,15 +39,8 @@ class TestMeshCommon(unittest.TestCase): self ): # setUp is executed before every test - # setting up a document to hold the tests self.doc_name = self.__class__.__name__ - if FreeCAD.ActiveDocument: - if FreeCAD.ActiveDocument.Name != self.doc_name: - FreeCAD.newDocument(self.doc_name) - else: - FreeCAD.newDocument(self.doc_name) - FreeCAD.setActiveDocument(self.doc_name) - self.active_doc = FreeCAD.ActiveDocument + self.document = FreeCAD.newDocument(self.doc_name) def test_00print( self @@ -228,15 +221,8 @@ class TestMeshEleTetra10(unittest.TestCase): self ): # setUp is executed before every test - # setting up a document to hold the tests self.doc_name = self.__class__.__name__ - if FreeCAD.ActiveDocument: - if FreeCAD.ActiveDocument.Name != self.doc_name: - FreeCAD.newDocument(self.doc_name) - else: - FreeCAD.newDocument(self.doc_name) - FreeCAD.setActiveDocument(self.doc_name) - self.active_doc = FreeCAD.ActiveDocument + self.document = FreeCAD.newDocument(self.doc_name) # more inits self.elem = "tetra10" diff --git a/src/Mod/Fem/femtest/app/test_object.py b/src/Mod/Fem/femtest/app/test_object.py index c7f336e580..37e02b8bdd 100644 --- a/src/Mod/Fem/femtest/app/test_object.py +++ b/src/Mod/Fem/femtest/app/test_object.py @@ -38,15 +38,8 @@ class TestObjectCreate(unittest.TestCase): self ): # setUp is executed before every test - # setting up a document to hold the tests self.doc_name = self.__class__.__name__ - if FreeCAD.ActiveDocument: - if FreeCAD.ActiveDocument.Name != self.doc_name: - FreeCAD.newDocument(self.doc_name) - else: - FreeCAD.newDocument(self.doc_name) - FreeCAD.setActiveDocument(self.doc_name) - self.active_doc = FreeCAD.ActiveDocument + self.document = FreeCAD.newDocument(self.doc_name) def test_00print( self @@ -61,7 +54,7 @@ class TestObjectCreate(unittest.TestCase): def test_femobjects_make( self ): - doc = self.active_doc + doc = self.document analysis = ObjectsFem.makeAnalysis(doc) analysis.addObject(ObjectsFem.makeConstraintBearing(doc)) @@ -158,15 +151,8 @@ class TestObjectType(unittest.TestCase): self ): # setUp is executed before every test - # setting up a document to hold the tests self.doc_name = self.__class__.__name__ - if FreeCAD.ActiveDocument: - if FreeCAD.ActiveDocument.Name != self.doc_name: - FreeCAD.newDocument(self.doc_name) - else: - FreeCAD.newDocument(self.doc_name) - FreeCAD.setActiveDocument(self.doc_name) - self.active_doc = FreeCAD.ActiveDocument + self.document = FreeCAD.newDocument(self.doc_name) def test_00print( self @@ -181,7 +167,7 @@ class TestObjectType(unittest.TestCase): def test_femobjects_type( self ): - doc = self.active_doc + doc = self.document from femtools.femutils import type_of_obj self.assertEqual( @@ -378,7 +364,7 @@ class TestObjectType(unittest.TestCase): def test_femobjects_isoftype( self ): - doc = self.active_doc + doc = self.document from femtools.femutils import is_of_type self.assertTrue(is_of_type( @@ -578,7 +564,7 @@ class TestObjectType(unittest.TestCase): ): # try to add all possible True types from inheritance chain see # https://forum.freecadweb.org/viewtopic.php?f=10&t=32625 - doc = self.active_doc + doc = self.document from femtools.femutils import is_derived_from @@ -1278,7 +1264,7 @@ class TestObjectType(unittest.TestCase): self ): # only the last True type is used - doc = self.active_doc + doc = self.document self.assertTrue( ObjectsFem.makeAnalysis( diff --git a/src/Mod/Fem/femtest/app/test_result.py b/src/Mod/Fem/femtest/app/test_result.py index 79f7a09e29..629ef477bc 100644 --- a/src/Mod/Fem/femtest/app/test_result.py +++ b/src/Mod/Fem/femtest/app/test_result.py @@ -38,15 +38,8 @@ class TestResult(unittest.TestCase): self ): # setUp is executed before every test - # setting up a document to hold the tests self.doc_name = self.__class__.__name__ - if FreeCAD.ActiveDocument: - if FreeCAD.ActiveDocument.Name != self.doc_name: - FreeCAD.newDocument(self.doc_name) - else: - FreeCAD.newDocument(self.doc_name) - FreeCAD.setActiveDocument(self.doc_name) - self.active_doc = FreeCAD.ActiveDocument + self.document = FreeCAD.newDocument(self.doc_name) def test_00print( self diff --git a/src/Mod/Fem/femtest/app/test_solverframework.py b/src/Mod/Fem/femtest/app/test_solverframework.py index 147385646a..fb64351624 100644 --- a/src/Mod/Fem/femtest/app/test_solverframework.py +++ b/src/Mod/Fem/femtest/app/test_solverframework.py @@ -39,15 +39,8 @@ class TestSolverFrameWork(unittest.TestCase): self ): # setUp is executed before every test - # setting up a document to hold the tests self.doc_name = self.__class__.__name__ - if FreeCAD.ActiveDocument: - if FreeCAD.ActiveDocument.Name != self.doc_name: - FreeCAD.newDocument(self.doc_name) - else: - FreeCAD.newDocument(self.doc_name) - FreeCAD.setActiveDocument(self.doc_name) - self.active_doc = FreeCAD.ActiveDocument + self.document = FreeCAD.newDocument(self.doc_name) # more inits self.mesh_name = "Mesh" @@ -73,9 +66,9 @@ class TestSolverFrameWork(unittest.TestCase): # set up the CalculiX static analysis example from femexamples import boxanalysis as box - box.setup_static(self.active_doc, "calculix") + box.setup_static(self.document, "calculix") - solver_obj = self.active_doc.SolverCalculiX + solver_obj = self.document.SolverCalculiX base_name = "cube_static" analysis_dir = testtools.get_unit_test_tmp_dir(self.temp_dir, solver_obj.Name) @@ -83,7 +76,7 @@ class TestSolverFrameWork(unittest.TestCase): # save the file save_fc_file = join(analysis_dir, solver_obj.Name + "_" + base_name + ".FCStd") fcc_print("Save FreeCAD file to {}...".format(save_fc_file)) - self.active_doc.saveAs(save_fc_file) + self.document.saveAs(save_fc_file) # write input file fcc_print("Checking FEM input file writing for CalculiX solver framework solver ...") @@ -115,19 +108,19 @@ class TestSolverFrameWork(unittest.TestCase): # set up the Elmer static analysis example from femexamples import boxanalysis as box - box.setup_static(self.active_doc, "elmer") + box.setup_static(self.document, "elmer") - analysis_obj = self.active_doc.Analysis - solver_obj = self.active_doc.SolverElmer - material_obj = self.active_doc.MechanicalMaterial - mesh_obj = self.active_doc.Mesh - box_object = self.active_doc.Box + analysis_obj = self.document.Analysis + solver_obj = self.document.SolverElmer + material_obj = self.document.MechanicalMaterial + mesh_obj = self.document.Mesh + box_object = self.document.Box base_name = "cube_static" analysis_dir = testtools.get_unit_test_tmp_dir(self.temp_dir, solver_obj.Name) # TODO move to elmer solver of femexample code - ObjectsFem.makeEquationElasticity(self.active_doc, solver_obj) + ObjectsFem.makeEquationElasticity(self.document, solver_obj) # set ThermalExpansionCoefficient # FIXME elmer elasticity needs the dictionary key "ThermalExpansionCoefficient" @@ -138,17 +131,17 @@ class TestSolverFrameWork(unittest.TestCase): # elmer needs a GMHS mesh object # FIXME error message on Python solver run - mesh_gmsh = ObjectsFem.makeMeshGmsh(self.active_doc) + mesh_gmsh = ObjectsFem.makeMeshGmsh(self.document) mesh_gmsh.CharacteristicLengthMin = "9 mm" mesh_gmsh.FemMesh = mesh_obj.FemMesh mesh_gmsh.Part = box_object analysis_obj.addObject(mesh_gmsh) - self.active_doc.removeObject(mesh_obj.Name) # remove original mesh object + self.document.removeObject(mesh_obj.Name) # remove original mesh object # save the file save_fc_file = join(analysis_dir, solver_obj.Name + "_" + base_name + ".FCStd") fcc_print("Save FreeCAD file to {}...".format(save_fc_file)) - self.active_doc.saveAs(save_fc_file) + self.document.saveAs(save_fc_file) # write input files fcc_print("Checking FEM input file writing for Elmer solver framework solver ...")