"""
open/dulcinea/lib/test/utest_material.py
"""
from dulcinea.material import Material, material_sort, MaterialDatabase
from sancho.utest import UTest
class MaterialTest (UTest):
def check_materials_constructor(self):
mdb = MaterialDatabase()
assert list(mdb.get_materials()) == []
m1 = Material('silicon')
mdb.add_material(m1)
assert list(mdb.get_materials()) == [m1]
m2 = Material('silicon', 'Si')
try:
mdb.add_material(m2)
assert 0
except ValueError: pass
assert list(mdb.get_materials()) == [m1]
m2 = Material('silicon2', 'Si')
mdb.add_material(m2)
assert len(mdb.get_materials()) == 2
m3 = Material('Oxygen', 'O2')
mdb.add_material(m3)
assert len(mdb.get_materials()) == 3
assert len(mdb.get_material('Oxygen').html_color) == 7
assert mdb.get_material('Oxygen').html_name == 'O2'
assert mdb.get_material('Oxygen').name == 'Oxygen'
m3 = Material('Oxygen2', 'O2', 'blue')
mdb.add_material(m3)
assert len(mdb.get_materials()) == 4
def check_materials_database(self):
mdb = MaterialDatabase()
mdb.add_material(Material('silicon'))
mdb.add_material(Material('silicon2', 'Si'))
mdb.add_material(Material('Oxygen', 'O2'))
mdb.add_material(Material('Oxygen2', 'O2','blue'))
mdb.add_material(Material('gas'))
assert len(mdb.get_material('gas').get_leaves()) == 1
assert len(mdb.get_material('Oxygen').get_leaves()) == 1
mdb.get_material('gas').add_child(mdb.get_material('Oxygen'))
assert len(mdb.get_material('gas').get_leaves()) == 1
assert len(mdb.get_material('gas').get_descendants()) == 1
mdb.get_material('gas').add_child(mdb.get_material('Oxygen2'))
assert len(mdb.get_material('gas').get_leaves()) == 2
assert len(mdb.get_material('gas').get_descendants()) == 2
mdb.get_material('gas').remove_child(mdb.get_material('Oxygen2'))
assert len(mdb.get_material('gas').get_leaves()) == 1
assert len(mdb.get_material('gas').get_descendants()) == 1
def check_sort(self):
material_list = []
for (name, label) in (("chocolate_sauce", "chocolate sauce"),
("peanut_butter", "peanut butter"),
("1_2_3_foobaroxynol", "1,2,3-foobaroxynol"),
("H2O", None)):
m = Material(name)
if label:
m.set_label(label)
material_list.append(m)
sorted_list = [material_list[2],
material_list[0],
material_list[3],
material_list[1]]
assert material_sort(list(material_list)) == sorted_list
material_list.reverse()
material_tuple = tuple(material_list)
assert material_sort(material_tuple) == sorted_list
def gen_materials():
for m in material_list:
yield m
materials = gen_materials()
assert material_sort(materials) == sorted_list
if __name__ == "__main__":
MaterialTest()