# *************************************************************************** # * Copyright (c) 2019 Bernd Hahnebach * # * * # * This file is part of the FreeCAD CAx development system. * # * * # * This program is free software; you can redistribute it and/or modify * # * it under the terms of the GNU Lesser General Public License (LGPL) * # * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * # * GNU Library General Public License for more details. * # * * # * You should have received a copy of the GNU Library General Public * # * License along with this program; if not, write to the Free Software * # * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * # * USA * # * * # *************************************************************************** __title__ = "Material FEM unit tests" __author__ = "Bernd Hahnebach" __url__ = "https://www.freecad.org" import unittest from os.path import join import FreeCAD from .support_utils import fcc_print class TestMaterialUnits(unittest.TestCase): fcc_print("import TestMaterialUnits") # ******************************************************************************************** def setUp(self): # setUp is executed before every test # new document self.document = FreeCAD.newDocument(self.__class__.__name__) # ******************************************************************************************** def tearDown(self): # tearDown is executed after every test FreeCAD.closeDocument(self.document.Name) # ******************************************************************************************** def test_00print(self): # since method name starts with 00 this will be run first # this test just prints a line with stars fcc_print( "\n{0}\n{1} run FEM TestMaterialUnits tests {2}\n{0}".format( 100 * "*", 10 * "*", 57 * "*" ) ) # ******************************************************************************************** def test_known_quantity_units(self): from materialtools.cardutils import get_known_material_quantity_parameter as knownquant known_quantity_parameter = knownquant() from materialtools.cardutils import check_parm_unit as checkparamunit for param in known_quantity_parameter: fcc_print(f"{param}") self.assertTrue( checkparamunit(param), "Unit of quantity material parameter {} " "is unknown to the FreeCAD unit system.".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(f"{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(f"{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 ), )