Source code for materials.material_test

"""Unit tests for Material."""
import os.path
import unittest
import numpy as np
from materials import Material, load_from_yaml, get_database_dir
from materials.material import build_properties
from materials.property import Property


[docs]class TestBuildProperties(unittest.TestCase): """Unit tests for build_properties."""
[docs] def test_build_properties_simple(self): """Test the build properties function with a simple property.""" # Setup yaml_dict = { 'density': { 'default_value': 1000., 'units': 'kg m^-3', 'reference': 'mmpds' } } # Action properties = build_properties(yaml_dict) # Verification self.assertTrue('density' in properties) self.assertEqual(properties['density'].query_value(), 1000.) self.assertEqual(properties['density'].units, 'kg m^-3')
[docs] def test_build_properties_1d_table(self): """Test the build properties function with a 1d lookup table.""" # Setup dv = 2.0 yaml_dict = { 'strength': { 'default_value': dv, 'units': 'MPa', 'reference': 'mmpds', 'variations_with_state': { 'thermal': { 'state_vars': ['temperature'], 'state_vars_units': {'temperature': 'kelvin'}, 'value_type': 'multiplier', 'representation': 'table', 'reference': 'mmpds', 'temperature': np.arange(4), 'values': np.arange(4) ** 2, } } } } # Action properties = build_properties(yaml_dict) # Verification self.assertTrue('strength' in properties) self.assertEqual(properties['strength'].units, 'MPa') result = properties['strength'].query_value({'temperature': 2}) self.assertEqual(result, 4. * dv)
[docs]class TestMaterial(unittest.TestCase): """Unit tests for Material class."""
[docs] def test_init(self): # Setup yaml_dict = { 'density': { 'default_value': 1000., 'units': 'kg m^-3', 'reference': 'mmpds' } } # Action matl = Material('name', properties_dict=yaml_dict) # Verification self.assertTrue(hasattr(matl, 'properties')) self.assertTrue('density' in matl.properties) self.assertEqual(matl.name, 'name') self.assertTrue(matl.category is None)
[docs] def test_getitem(self): """Unit test for __getitem__""" # Setup yaml_dict = { 'density': { 'default_value': 1000., 'units': 'kg m^-3', 'reference': 'mmpds' } } matl = Material('name', properties_dict=yaml_dict) # Action prop = matl['density'] # Verification self.assertTrue(issubclass(type(prop), Property))
[docs]class TestLoadFromYaml(unittest.TestCase): """Unit tests for load_from_yaml."""
[docs] def test_al6061_T6_extruded(self): # Setup filename = os.path.join(get_database_dir(), 'Al_6061.yaml') # Action al6061 = load_from_yaml(filename, 'extruded, thickness > 1 inch', 'T6') # Verification self.assertEqual(al6061.category, 'metal') self.assertEqual(al6061.properties['solidus_temperature'].query_value(), 855.) self.assertEqual(al6061.properties['youngs_modulus'].units, 'GPa') result = al6061.properties['youngs_modulus'].query_value({'temperature': 294}) self.assertAlmostEqual(result, 68.3, delta=0.5) print('\n' + str(al6061) + '\n')
if __name__ == '__main__': unittest.main()