diff --git a/src/Mod/Fem/TestFem.py b/src/Mod/Fem/TestFem.py index 8cb657e239..aa41bb3ee8 100644 --- a/src/Mod/Fem/TestFem.py +++ b/src/Mod/Fem/TestFem.py @@ -99,6 +99,7 @@ gf() ./bin/FreeCADCmd --run-test "femtest.testcommon.TestFemCommon.test_adding_refshaps" ./bin/FreeCADCmd --run-test "femtest.testcommon.TestFemCommon.test_pyimport_all_FEM_modules" ./bin/FreeCADCmd --run-test "femtest.testmaterial.TestMaterialUnits.test_known_quantity_units" +./bin/FreeCADCmd --run-test "femtest.testmaterial.TestMaterialUnits.test_material_card_quantities" ./bin/FreeCADCmd --run-test "femtest.testmesh.TestMeshCommon.test_mesh_seg2_python" ./bin/FreeCADCmd --run-test "femtest.testmesh.TestMeshCommon.test_mesh_seg3_python" ./bin/FreeCADCmd --run-test "femtest.testmesh.TestMeshCommon.test_unv_save_load" @@ -148,6 +149,9 @@ unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.t import unittest unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.testmaterial.TestMaterialUnits.test_known_quantity_units")) +import unittest +unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.testmaterial.TestMaterialUnits.test_material_card_quantities")) + import unittest unittest.TextTestRunner().run(unittest.TestLoader().loadTestsFromName("femtest.testmesh.TestMeshCommon.test_mesh_seg2_python")) diff --git a/src/Mod/Fem/femtest/testmaterial.py b/src/Mod/Fem/femtest/testmaterial.py index 481702147d..3c37dede96 100644 --- a/src/Mod/Fem/femtest/testmaterial.py +++ b/src/Mod/Fem/femtest/testmaterial.py @@ -27,6 +27,8 @@ import FreeCAD import unittest from .utilstest import fcc_print +from os.path import join + class TestMaterialUnits(unittest.TestCase): fcc_print('import TestMaterialUnits') @@ -54,6 +56,34 @@ class TestMaterialUnits(unittest.TestCase): .format(param) ) + def test_material_card_quantities(self): + # test the value and unit of known quantity parameter from solid build in material cards + # keep in mind only if FreeCAD is installed all materials are copied + # TODO Fluid materials (are they installed?) + + # get build in materials + builtin_solid_mat_dir = join(FreeCAD.getResourceDir(), "Mod", "Material", "StandardMaterial") + fcc_print('{}'.format(builtin_solid_mat_dir)) + from materialtools.cardutils import add_cards_from_a_dir as addmats + materials, cards, icons = addmats({}, {}, {}, builtin_solid_mat_dir, '') + + # get known material quantity parameter + from materialtools.cardutils import get_known_material_quantity_parameter as knownquant + known_quantities = knownquant() + + # check param, value pairs + from materialtools.cardutils import check_value_unit as checkvalueunit + for mat in materials: + fcc_print('{}'.format(mat)) + for param, value in materials[mat].items(): + if param in known_quantities: + # fcc_print(' {} --> {}'.format(param, value)) + self.assertTrue( + checkvalueunit(param, value), + 'Unit of quantity {} from material parameter {} is wrong.' + .format(value, param) + ) + def tearDown(self): # clearance, is executed after every test FreeCAD.closeDocument(self.doc_name)