def test_material_init(): """Test the initialization of EnergyMaterial objects and basic properties.""" concrete = EnergyMaterial('Concrete', 0.2, 0.5, 800, 1200, 'MediumSmooth', 0.95, 0.75, 0.8) str(concrete) # test the string representation of the material concrete_dup = concrete.duplicate() assert concrete.identifier == concrete_dup.identifier == 'Concrete' assert concrete.thickness == concrete_dup.thickness == 0.2 assert concrete.conductivity == concrete_dup.conductivity == 0.5 assert concrete.density == concrete_dup.density == 800 assert concrete.specific_heat == concrete_dup.specific_heat == 1200 assert concrete.roughness == concrete_dup.roughness == 'MediumSmooth' assert concrete.thermal_absorptance == concrete_dup.thermal_absorptance == 0.95 assert concrete.solar_absorptance == concrete_dup.solar_absorptance == 0.75 assert concrete.visible_absorptance == concrete_dup.visible_absorptance == 0.8 assert concrete.resistivity == 1 / 0.5 assert concrete.u_value == pytest.approx(2.5, rel=1e-2) assert concrete.r_value == pytest.approx(0.4, rel=1e-2) assert concrete.mass_area_density == pytest.approx(160, rel=1e-2) assert concrete.area_heat_capacity == pytest.approx(192000, rel=1e-2) concrete.r_value = 0.5 assert concrete.conductivity != concrete_dup.conductivity assert concrete.r_value == 0.5 assert concrete.conductivity == pytest.approx(0.4, rel=1e-2)
def test_material_equivalency(): """Test the equality of a material to another EnergyMaterial.""" concrete_1 = EnergyMaterial('Concrete [HW]', 0.2, 0.5, 800, 1200) concrete_2 = concrete_1.duplicate() insulation = EnergyMaterial('Insulation', 0.05, 0.049, 265, 836) assert concrete_1 == concrete_2 assert concrete_1 != insulation collection = [concrete_1, concrete_2, insulation] assert len(set(collection)) == 2 concrete_2.density = 600 assert concrete_1 != concrete_2 assert len(set(collection)) == 3