added new wall recommendations tests

This commit is contained in:
Khalim Conn-Kowlessar 2023-10-18 14:59:02 +11:00
parent 8b078da71e
commit 8261a61454
2 changed files with 114 additions and 11 deletions

View file

@ -112,15 +112,6 @@ class WallRecommendations(Definitions):
self.estimated_u_value = u_value
if self.property.walls["is_solid_brick"] | self.property.walls["is_system_built"]:
if u_value >= self.BUILDING_REGULATIONS_PART_L_MAX_U_VALUE:
self.find_insulation(u_value)
return
# If the u-value is within regulations, we don't do anything
return
if is_cavity_wall:
if u_value >= self.BUILDING_REGULATIONS_PART_L_MAX_U_VALUE:
# Test filling cavity
@ -128,7 +119,13 @@ class WallRecommendations(Definitions):
return
raise NotImplementedError("Not implemented yet")
# Remaining wall types are treated with IWI or EWI
if u_value >= self.BUILDING_REGULATIONS_PART_L_MAX_U_VALUE:
self.find_insulation(u_value)
return
# If the u-value is within regulations, we don't do anything
return
def find_cavity_insulation(self, u_value, insulation_thickness):
"""

View file

@ -519,6 +519,10 @@ class TestCavityWallRecommensations:
}
input_property2.age_band = "F"
input_property2.insulation_wall_area = 120
input_property2.restricted_measures = False
input_property2.data = {"property-type": "house"}
assert input_property2.walls["is_system_built"]
recommender2 = WallRecommendations(
property_instance=input_property2,
@ -527,4 +531,106 @@ class TestCavityWallRecommensations:
assert not recommender2.recommendations
recommender2.recommend()
recommender2.recommend()
assert recommender2.recommendations
assert len(recommender2.recommendations) == 6
assert recommender2.estimated_u_value == 1
assert np.isclose(recommender2.recommendations[0]["new_u_value"], 0.29)
assert np.isclose(recommender2.recommendations[0]["cost"], 10800)
assert recommender2.recommendations[0]["parts"][0]["type"] == "external_wall_insulation"
assert recommender2.recommendations[0]["parts"][0]["depths"] == [90]
assert np.isclose(recommender2.recommendations[5]["new_u_value"], 0.29)
assert np.isclose(recommender2.recommendations[5]["cost"], 2400)
assert recommender2.recommendations[5]["parts"][0]["type"] == "internal_wall_insulation"
assert recommender2.recommendations[5]["parts"][0]["depths"] == [20]
assert np.isclose(recommender2.recommendations[3]["new_u_value"], 0.28)
assert np.isclose(recommender2.recommendations[3]["cost"], 4800)
assert recommender2.recommendations[3]["parts"][0]["type"] == "external_wall_insulation"
assert recommender2.recommendations[3]["parts"][0]["depths"] == [40]
def test_timber_frame_wall(self):
input_property3 = Property(id=1, postcode="F4k3 2", address1="223 fake street", epc_client=Mock())
input_property3.walls = {
'original_description': 'Timber frame, as built, no insulation (assumed)',
'clean_description': 'Timber frame, as built, no insulation',
'thermal_transmittance': None, 'thermal_transmittance_unit': None,
'is_cavity_wall': False, 'is_filled_cavity': False, 'is_solid_brick': False,
'is_system_built': False, 'is_timber_frame': True, 'is_granite_or_whinstone': False,
'is_as_built': True, 'is_cob': False, 'is_assumed': True,
'is_sandstone_or_limestone': False, 'is_park_home': False,
'insulation_thickness': 'none', 'external_insulation': False,
'internal_insulation': False
}
input_property3.age_band = "B"
input_property3.insulation_wall_area = 99
input_property3.restricted_measures = False
input_property3.data = {"property-type": "house"}
assert input_property3.walls["is_timber_frame"]
recommender3 = WallRecommendations(
property_instance=input_property3,
materials=internal_wall_insulation_parts + external_wall_insulation_parts
)
assert not recommender3.recommendations
recommender3.recommend()
assert recommender3.recommendations
assert len(recommender3.recommendations) == 2
assert recommender3.estimated_u_value == 1.9
assert np.isclose(recommender3.recommendations[0]["new_u_value"], 0.26)
assert np.isclose(recommender3.recommendations[0]["cost"], 12375)
assert recommender3.recommendations[0]["parts"][0]["type"] == "external_wall_insulation"
assert recommender3.recommendations[0]["parts"][0]["depths"] == [125]
assert np.isclose(recommender3.recommendations[1]["new_u_value"], 0.26)
assert np.isclose(recommender3.recommendations[1]["cost"], 4950)
assert recommender3.recommendations[1]["parts"][0]["type"] == "external_wall_insulation"
assert recommender3.recommendations[1]["parts"][0]["depths"] == [50]
def test_granite_or_whinstone_wall(self):
input_property4 = Property(id=1, postcode="F4k3 2", address1="223 fake street", epc_client=Mock())
input_property4.walls = {
'original_description': 'Granite or whinstone, as built, no insulation (assumed)',
'clean_description': 'Granite or whinstone, as built, no insulation',
'thermal_transmittance': None, 'thermal_transmittance_unit': None,
'is_cavity_wall': False, 'is_filled_cavity': False, 'is_solid_brick': False,
'is_system_built': False, 'is_timber_frame': False, 'is_granite_or_whinstone': True,
'is_as_built': True, 'is_cob': False, 'is_assumed': True,
'is_sandstone_or_limestone': False, 'is_park_home': False,
'insulation_thickness': 'none', 'external_insulation': False,
'internal_insulation': False
}
input_property4.age_band = "A"
input_property4.insulation_wall_area = 223
input_property4.restricted_measures = False
input_property4.data = {"property-type": "Bungalow"}
assert input_property4.walls["is_granite_or_whinstone"]
recommender4 = WallRecommendations(
property_instance=input_property4,
materials=internal_wall_insulation_parts + external_wall_insulation_parts
)
assert not recommender4.recommendations
recommender4.recommend()
assert recommender4.recommendations
assert len(recommender4.recommendations) == 2
assert recommender4.estimated_u_value == 2.3
assert np.isclose(recommender4.recommendations[0]["new_u_value"], 0.27)
assert np.isclose(recommender4.recommendations[0]["cost"], 27875)
assert recommender4.recommendations[0]["parts"][0]["type"] == "external_wall_insulation"
assert recommender4.recommendations[0]["parts"][0]["depths"] == [125]
assert np.isclose(recommender4.recommendations[1]["new_u_value"], 0.27)
assert np.isclose(recommender4.recommendations[1]["cost"], 11150)
assert recommender4.recommendations[1]["parts"][0]["type"] == "external_wall_insulation"
assert recommender4.recommendations[1]["parts"][0]["depths"] == [50]