import pytest from epc_data.tests.test_data.test_floor_attributes_cases import clean_floor_cases from epc_data.attributes.FloorAttributes import FloorAttributes class TestCleanFloor: def test_init(self): # Test initialization with a valid description valid_description = 'Solid, limited insulation (assumed)' floor_attr = FloorAttributes(valid_description) assert floor_attr.description == valid_description.lower() # Test initialization with an empty description with pytest.raises(ValueError): FloorAttributes('') # Test initialization with a description that contains none of the keywords with pytest.raises(ValueError): FloorAttributes('description without keywords') def test_process_floor(self): for test_case in clean_floor_cases: result = FloorAttributes(test_case['original_description']).process() # Ensure the output ordering is correct expected_result = {key: test_case[key] for key in result.keys()} expected_result["desc"] = test_case["original_description"] result["desc"] = test_case["original_description"] assert result == expected_result def test_invalid_description(self): # Test that invalid descriptions raise a ValueError invalid_descriptions = [ "", "invalid description", "description with no known floor types or thermal transmittance", ] for description in invalid_descriptions: with pytest.raises(ValueError): FloorAttributes(description).process() def test_process_with_invalid_description(self): # Test that processing an invalid description raises a ValueError invalid_description = 'description without keywords' with pytest.raises(ValueError): FloorAttributes(invalid_description)