FEM: unit tests, add test class to read old document objects
This commit is contained in:
@@ -222,6 +222,11 @@ SET(FemTestsMesh_SRCS
|
||||
femtest/data/mesh/tetra10_mesh.z88
|
||||
)
|
||||
|
||||
SET(FemTestsOpen_SRCS
|
||||
femtest/data/open/__init__.py
|
||||
femtest/data/open/all_objects_de9b3fb438.FCStd
|
||||
)
|
||||
|
||||
SET(FemTools_SRCS
|
||||
femtools/__init__.py
|
||||
femtools/ccxtools.py
|
||||
@@ -281,6 +286,7 @@ SET(FemAllScripts
|
||||
${FemTestsCcx_SRCS}
|
||||
${FemTestsElmer_SRCS}
|
||||
${FemTestsMesh_SRCS}
|
||||
${FemTestsOpen_SRCS}
|
||||
${FemTools_SRCS}
|
||||
${FemObjectsScripts_SRCS}
|
||||
)
|
||||
@@ -313,6 +319,7 @@ INSTALL(FILES ${FemTestsFiles_SRCS} DESTINATION Mod/Fem/femtest/data)
|
||||
INSTALL(FILES ${FemTestsCcx_SRCS} DESTINATION Mod/Fem/femtest/data/ccx)
|
||||
INSTALL(FILES ${FemTestsElmer_SRCS} DESTINATION Mod/Fem/femtest/data/elmer)
|
||||
INSTALL(FILES ${FemTestsMesh_SRCS} DESTINATION Mod/Fem/femtest/data/mesh)
|
||||
INSTALL(FILES ${FemTestsOpen_SRCS} DESTINATION Mod/Fem/femtest/data/open)
|
||||
INSTALL(FILES ${FemTools_SRCS} DESTINATION Mod/Fem/femtools)
|
||||
INSTALL(FILES ${FemObjectsScripts_SRCS} DESTINATION Mod/Fem/femobjects)
|
||||
|
||||
|
||||
@@ -162,6 +162,7 @@ gf()
|
||||
./bin/FreeCADCmd --run-test "femtest.app.test_object.TestObjectType.test_femobjects_derivedfromfem"
|
||||
./bin/FreeCADCmd --run-test "femtest.app.test_object.TestObjectType.test_femobjects_derivedfromstd"
|
||||
./bin/FreeCADCmd --run-test "femtest.app.test_open.TestObjectOpen.test_femobjects_open_head"
|
||||
./bin/FreeCADCmd --run-test "femtest.app.test_open.TestObjectOpen.test_femobjects_open_de9b3fb438"
|
||||
./bin/FreeCADCmd --run-test "femtest.app.test_result.TestResult.test_read_frd_massflow_networkpressure"
|
||||
./bin/FreeCADCmd --run-test "femtest.app.test_result.TestResult.test_stress_von_mises"
|
||||
./bin/FreeCADCmd --run-test "femtest.app.test_result.TestResult.test_stress_principal_std"
|
||||
@@ -270,6 +271,9 @@ unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.a
|
||||
import unittest
|
||||
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_open.TestObjectOpen.test_femobjects_open_head))
|
||||
|
||||
import unittest
|
||||
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_open.TestObjectOpen.test_femobjects_open_de9b3fb438))
|
||||
|
||||
import unittest
|
||||
unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.app.test_result.TestResult.test_read_frd_massflow_networkpressure"))
|
||||
|
||||
@@ -323,4 +327,8 @@ doc = FreeCAD.open(app_home + "data/examples/FemCalculixCantilever3D_newSolver.F
|
||||
doc = FreeCAD.open(app_home + "data/examples/Fem.FCStd")
|
||||
doc = FreeCAD.open(app_home + "data/examples/Fem2.FCStd")
|
||||
|
||||
# load all documents files
|
||||
app_home = FreeCAD.ConfigGet("AppHomePath")
|
||||
doc = FreeCAD.open(FreeCAD.ConfigGet("AppHomePath") + 'Mod/Fem/femtest/data/open/all_objects_de9b3fb438.FCStd')
|
||||
|
||||
"""
|
||||
|
||||
@@ -35,6 +35,17 @@ from . import support_utils as testtools
|
||||
from .support_utils import fcc_print
|
||||
|
||||
|
||||
"""
|
||||
FIXME TODO HACK
|
||||
Important note!
|
||||
Delete build directory (at least in fem the objects and vpobjects directories)
|
||||
if not migrate will not be used because the old modules might still be in the
|
||||
build directory, thus the test will fail
|
||||
rm -rf Mod/Fem/
|
||||
FIXME TODO HACK
|
||||
"""
|
||||
|
||||
|
||||
"""
|
||||
# TODO: separate unit test:
|
||||
# std document name of object == obj type
|
||||
@@ -78,7 +89,7 @@ class TestObjectOpen(unittest.TestCase):
|
||||
self
|
||||
):
|
||||
fcc_print("load master head document objects")
|
||||
|
||||
|
||||
# get a document with all FEM objects
|
||||
from .test_object import create_all_fem_objects_doc
|
||||
doc = create_all_fem_objects_doc(self.document)
|
||||
@@ -95,6 +106,25 @@ class TestObjectOpen(unittest.TestCase):
|
||||
# FeaturePythons view provider
|
||||
self.compare_feature_pythons_class_gui(doc)
|
||||
|
||||
# ********************************************************************************************
|
||||
def test_femobjects_open_de9b3fb438(
|
||||
self
|
||||
):
|
||||
# the number in method name is the FreeCAD commit the document was created with
|
||||
# https://github.com/FreeCAD/FreeCAD/commit/de9b3fb438
|
||||
# the document was created by running the object create unit test
|
||||
# FreeCAD --run-test "femtest.app.test_object.TestObjectCreate.test_femobjects_make"
|
||||
fcc_print("load old document objects")
|
||||
self.document = FreeCAD.open(join(self.test_file_dir, "all_objects_de9b3fb438.FCStd"))
|
||||
doc = self.document
|
||||
|
||||
# C++ objects
|
||||
self.compare_cpp_objs(doc)
|
||||
# FeaturePythons objects
|
||||
self.compare_feature_pythons_class_app(doc)
|
||||
# FeaturePythons view provider
|
||||
self.compare_feature_pythons_class_gui(doc)
|
||||
|
||||
# ********************************************************************************************
|
||||
def compare_cpp_objs(
|
||||
self,
|
||||
@@ -124,129 +154,129 @@ class TestObjectOpen(unittest.TestCase):
|
||||
str(doc.ConstraintBodyHeatSource.Proxy.__class__)
|
||||
)
|
||||
"""
|
||||
from femobjects._FemConstraintBodyHeatSource import Proxy
|
||||
from femobjects.constraint_bodyheatsource import ConstraintBodyHeatSource
|
||||
self.assertEqual(
|
||||
Proxy,
|
||||
ConstraintBodyHeatSource,
|
||||
doc.ConstraintBodyHeatSource.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemConstraintElectrostaticPotential import Proxy
|
||||
from femobjects.constraint_electrostaticpotential import ConstraintElectrostaticPotential
|
||||
self.assertEqual(
|
||||
Proxy,
|
||||
ConstraintElectrostaticPotential,
|
||||
doc.ConstraintElectrostaticPotential.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemConstraintFlowVelocity import Proxy
|
||||
from femobjects.constraint_flowvelocity import ConstraintFlowVelocity
|
||||
self.assertEqual(
|
||||
Proxy,
|
||||
ConstraintFlowVelocity,
|
||||
doc.ConstraintFlowVelocity.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemConstraintInitialFlowVelocity import Proxy
|
||||
from femobjects.constraint_initialflowvelocity import ConstraintInitialFlowVelocity
|
||||
self.assertEqual(
|
||||
Proxy,
|
||||
ConstraintInitialFlowVelocity,
|
||||
doc.ConstraintInitialFlowVelocity.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemConstraintSelfWeight import _FemConstraintSelfWeight
|
||||
from femobjects.constraint_selfweight import ConstraintSelfWeight
|
||||
self.assertEqual(
|
||||
_FemConstraintSelfWeight,
|
||||
ConstraintSelfWeight,
|
||||
doc.ConstraintSelfWeight.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemConstraintTie import _FemConstraintTie
|
||||
from femobjects.constraint_tie import ConstraintTie
|
||||
self.assertEqual(
|
||||
_FemConstraintTie,
|
||||
ConstraintTie,
|
||||
doc.ConstraintTie.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemElementFluid1D import _FemElementFluid1D
|
||||
from femobjects.element_fluid1D import ElementFluid1D
|
||||
self.assertEqual(
|
||||
_FemElementFluid1D,
|
||||
ElementFluid1D,
|
||||
doc.ElementFluid1D.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemElementGeometry1D import _FemElementGeometry1D
|
||||
from femobjects.element_geometry1D import ElementGeometry1D
|
||||
self.assertEqual(
|
||||
_FemElementGeometry1D,
|
||||
ElementGeometry1D,
|
||||
doc.ElementGeometry1D.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemElementGeometry2D import _FemElementGeometry2D
|
||||
from femobjects.element_geometry2D import ElementGeometry2D
|
||||
self.assertEqual(
|
||||
_FemElementGeometry2D,
|
||||
ElementGeometry2D,
|
||||
doc.ElementGeometry2D.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemElementRotation1D import _FemElementRotation1D
|
||||
from femobjects.element_rotation1D import ElementRotation1D
|
||||
self.assertEqual(
|
||||
_FemElementRotation1D,
|
||||
ElementRotation1D,
|
||||
doc.ElementRotation1D.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemMaterial import _FemMaterial
|
||||
from femobjects.material_common import MaterialCommon
|
||||
self.assertEqual(
|
||||
_FemMaterial,
|
||||
MaterialCommon,
|
||||
doc.MaterialFluid.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemMaterial import _FemMaterial
|
||||
from femobjects.material_common import MaterialCommon
|
||||
self.assertEqual(
|
||||
_FemMaterial,
|
||||
MaterialCommon,
|
||||
doc.MaterialSolid.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemMaterialMechanicalNonlinear import _FemMaterialMechanicalNonlinear
|
||||
from femobjects.material_mechanicalnonlinear import MaterialMechanicalNonlinear
|
||||
self.assertEqual(
|
||||
_FemMaterialMechanicalNonlinear,
|
||||
MaterialMechanicalNonlinear,
|
||||
doc.MaterialMechanicalNonlinear.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemMaterialReinforced import _FemMaterialReinforced
|
||||
from femobjects.material_reinforced import MaterialReinforced
|
||||
self.assertEqual(
|
||||
_FemMaterialReinforced,
|
||||
MaterialReinforced,
|
||||
doc.MaterialReinforced.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemMeshGmsh import _FemMeshGmsh
|
||||
from femobjects.mesh_gmsh import MeshGmsh
|
||||
self.assertEqual(
|
||||
_FemMeshGmsh,
|
||||
MeshGmsh,
|
||||
doc.MeshGmsh.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemMeshBoundaryLayer import _FemMeshBoundaryLayer
|
||||
from femobjects.mesh_boundarylayer import MeshBoundaryLayer
|
||||
self.assertEqual(
|
||||
_FemMeshBoundaryLayer,
|
||||
MeshBoundaryLayer,
|
||||
doc.MeshBoundaryLayer.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemMeshGroup import _FemMeshGroup
|
||||
from femobjects.mesh_group import MeshGroup
|
||||
self.assertEqual(
|
||||
_FemMeshGroup,
|
||||
MeshGroup,
|
||||
doc.MeshGroup.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemMeshRegion import _FemMeshRegion
|
||||
from femobjects.mesh_region import MeshRegion
|
||||
self.assertEqual(
|
||||
_FemMeshRegion,
|
||||
MeshRegion,
|
||||
doc.MeshRegion.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemMeshResult import _FemMeshResult
|
||||
from femobjects.mesh_result import MeshResult
|
||||
self.assertEqual(
|
||||
_FemMeshResult,
|
||||
MeshResult,
|
||||
doc.MeshResult.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemResultMechanical import _FemResultMechanical
|
||||
from femobjects.result_mechanical import ResultMechanical
|
||||
self.assertEqual(
|
||||
_FemResultMechanical,
|
||||
ResultMechanical,
|
||||
doc.ResultMechanical.Proxy.__class__
|
||||
)
|
||||
|
||||
from femobjects._FemSolverCalculix import _FemSolverCalculix
|
||||
from femobjects.solver_ccxtools import SolverCcxTools
|
||||
self.assertEqual(
|
||||
_FemSolverCalculix,
|
||||
SolverCcxTools,
|
||||
doc.SolverCcxTools.Proxy.__class__
|
||||
)
|
||||
|
||||
@@ -308,129 +338,129 @@ class TestObjectOpen(unittest.TestCase):
|
||||
FreeCAD.closeDocument(doc.Name)
|
||||
return
|
||||
|
||||
from femguiobjects._ViewProviderFemConstraintBodyHeatSource import ViewProxy
|
||||
from femviewprovider.view_constraint_bodyheatsource import VPConstraintBodyHeatSource
|
||||
self.assertEqual(
|
||||
ViewProxy,
|
||||
VPConstraintBodyHeatSource,
|
||||
doc.ConstraintBodyHeatSource.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemConstraintElectrostaticPotential import ViewProxy
|
||||
from femviewprovider.view_constraint_electrostaticpotential import VPConstraintElectroStaticPotential
|
||||
self.assertEqual(
|
||||
ViewProxy,
|
||||
VPConstraintElectroStaticPotential,
|
||||
doc.ConstraintElectrostaticPotential.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemConstraintFlowVelocity import ViewProxy
|
||||
from femviewprovider.view_constraint_flowvelocity import VPConstraintFlowVelocity
|
||||
self.assertEqual(
|
||||
ViewProxy,
|
||||
VPConstraintFlowVelocity,
|
||||
doc.ConstraintFlowVelocity.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemConstraintInitialFlowVelocity import ViewProxy
|
||||
from femviewprovider.view_constraint_initialflowvelocity import VPConstraintInitialFlowVelocity
|
||||
self.assertEqual(
|
||||
ViewProxy,
|
||||
VPConstraintInitialFlowVelocity,
|
||||
doc.ConstraintInitialFlowVelocity.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemConstraintSelfWeight import _ViewProviderFemConstraintSelfWeight
|
||||
from femviewprovider.view_constraint_selfweight import VPConstraintSelfWeight
|
||||
self.assertEqual(
|
||||
_ViewProviderFemConstraintSelfWeight,
|
||||
VPConstraintSelfWeight,
|
||||
doc.ConstraintSelfWeight.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemConstraintTie import _ViewProviderFemConstraintTie
|
||||
from femviewprovider.view_constraint_tie import VPConstraintTie
|
||||
self.assertEqual(
|
||||
_ViewProviderFemConstraintTie,
|
||||
VPConstraintTie,
|
||||
doc.ConstraintTie.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemElementFluid1D import _ViewProviderFemElementFluid1D
|
||||
from femviewprovider.view_element_fluid1D import VPElementFluid1D
|
||||
self.assertEqual(
|
||||
_ViewProviderFemElementFluid1D,
|
||||
VPElementFluid1D,
|
||||
doc.ElementFluid1D.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemElementGeometry1D import _ViewProviderFemElementGeometry1D
|
||||
from femviewprovider.view_element_geometry1D import VPElementGeometry1D
|
||||
self.assertEqual(
|
||||
_ViewProviderFemElementGeometry1D,
|
||||
VPElementGeometry1D,
|
||||
doc.ElementGeometry1D.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemElementGeometry2D import _ViewProviderFemElementGeometry2D
|
||||
from femviewprovider.view_element_geometry2D import VPElementGeometry2D
|
||||
self.assertEqual(
|
||||
_ViewProviderFemElementGeometry2D,
|
||||
VPElementGeometry2D,
|
||||
doc.ElementGeometry2D.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemElementRotation1D import _ViewProviderFemElementRotation1D
|
||||
from femviewprovider.view_element_rotation1D import VPElementRotation1D
|
||||
self.assertEqual(
|
||||
_ViewProviderFemElementRotation1D,
|
||||
VPElementRotation1D,
|
||||
doc.ElementRotation1D.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemMaterial import _ViewProviderFemMaterial
|
||||
from femviewprovider.view_material_common import VPMaterialCommon
|
||||
self.assertEqual(
|
||||
_ViewProviderFemMaterial,
|
||||
VPMaterialCommon,
|
||||
doc.MaterialFluid.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemMaterial import _ViewProviderFemMaterial
|
||||
from femviewprovider.view_material_common import VPMaterialCommon
|
||||
self.assertEqual(
|
||||
_ViewProviderFemMaterial,
|
||||
VPMaterialCommon,
|
||||
doc.MaterialSolid.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemMaterialMechanicalNonlinear import _ViewProviderFemMaterialMechanicalNonlinear
|
||||
from femviewprovider.view_material_mechanicalnonlinear import VPMaterialMechanicalNonlinear
|
||||
self.assertEqual(
|
||||
_ViewProviderFemMaterialMechanicalNonlinear,
|
||||
VPMaterialMechanicalNonlinear,
|
||||
doc.MaterialMechanicalNonlinear.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemMaterialReinforced import _ViewProviderFemMaterialReinforced
|
||||
from femviewprovider.view_material_reinforced import VPMaterialReinforced
|
||||
self.assertEqual(
|
||||
_ViewProviderFemMaterialReinforced,
|
||||
VPMaterialReinforced,
|
||||
doc.MaterialReinforced.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemMeshGmsh import _ViewProviderFemMeshGmsh
|
||||
from femviewprovider.view_mesh_gmsh import VPMeshGmsh
|
||||
self.assertEqual(
|
||||
_ViewProviderFemMeshGmsh,
|
||||
VPMeshGmsh,
|
||||
doc.MeshGmsh.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemMeshBoundaryLayer import _ViewProviderFemMeshBoundaryLayer
|
||||
from femviewprovider.view_mesh_boundarylayer import VPMeshBoundaryLayer
|
||||
self.assertEqual(
|
||||
_ViewProviderFemMeshBoundaryLayer,
|
||||
VPMeshBoundaryLayer,
|
||||
doc.MeshBoundaryLayer.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemMeshGroup import _ViewProviderFemMeshGroup
|
||||
from femviewprovider.view_mesh_group import VPMeshGroup
|
||||
self.assertEqual(
|
||||
_ViewProviderFemMeshGroup,
|
||||
VPMeshGroup,
|
||||
doc.MeshGroup.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemMeshRegion import _ViewProviderFemMeshRegion
|
||||
from femviewprovider.view_mesh_region import VPMeshRegion
|
||||
self.assertEqual(
|
||||
_ViewProviderFemMeshRegion,
|
||||
VPMeshRegion,
|
||||
doc.MeshRegion.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemMeshResult import _ViewProviderFemMeshResult
|
||||
from femviewprovider.view_mesh_result import VPFemMeshResult
|
||||
self.assertEqual(
|
||||
_ViewProviderFemMeshResult,
|
||||
VPFemMeshResult,
|
||||
doc.MeshResult.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemResultMechanical import _ViewProviderFemResultMechanical
|
||||
from femviewprovider.view_result_mechanical import VPResultMechanical
|
||||
self.assertEqual(
|
||||
_ViewProviderFemResultMechanical,
|
||||
VPResultMechanical,
|
||||
doc.ResultMechanical.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
from femguiobjects._ViewProviderFemSolverCalculix import _ViewProviderFemSolverCalculix
|
||||
from femviewprovider.view_solver_ccxtools import VPSolverCcxTools
|
||||
self.assertEqual(
|
||||
_ViewProviderFemSolverCalculix,
|
||||
VPSolverCcxTools,
|
||||
doc.SolverCcxTools.ViewObject.Proxy.__class__
|
||||
)
|
||||
|
||||
|
||||
0
src/Mod/Fem/femtest/data/open/__init__.py
Normal file
0
src/Mod/Fem/femtest/data/open/__init__.py
Normal file
BIN
src/Mod/Fem/femtest/data/open/all_objects_de9b3fb438.FCStd
Normal file
BIN
src/Mod/Fem/femtest/data/open/all_objects_de9b3fb438.FCStd
Normal file
Binary file not shown.
Reference in New Issue
Block a user