-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1500 from pnnl/RCT/YJ/get_swh_uses_associated_wit…
…h_each_building_segment
- Loading branch information
Showing
2 changed files
with
93 additions
and
0 deletions.
There are no files selected for viewing
28 changes: 28 additions & 0 deletions
28
...ets/ashrae9012019/ruleset_functions/get_swh_uses_associated_with_each_building_segment.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
from rct229.utils.jsonpath_utils import find_all | ||
|
||
|
||
def get_swh_uses_associated_with_each_building_segment( | ||
rmd: dict, building_segment_id: str | ||
) -> list[str]: | ||
""" | ||
This function gets all the SWH uses connected to a building segment or an empty list if no service water heating uses are found in the building segment. This function is primarily to encapsulate getting service water heating uses in one function so that if a change is made in the schema as to how service water heating use is specified, | ||
the RCT only needs to change in one place . | ||
Parameters | ||
---------- | ||
rmd: dict | ||
RMD at RuleSetModelDescription level | ||
building_segment_id: str | ||
building segment id | ||
Returns | ||
------- | ||
swh_uses_list: list | ||
A list containing the ids of all service water heating uses associated with a building segment | ||
""" | ||
|
||
swh_uses_list = find_all( | ||
f'$.buildings[*].building_segments[*][?(@.id="{building_segment_id}")].zones[*].spaces[*].service_water_heating_uses[*].id', | ||
rmd, | ||
) | ||
return swh_uses_list |
65 changes: 65 additions & 0 deletions
65
...shrae9012019/ruleset_functions/get_swh_uses_associated_with_each_building_segment_test.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
from rct229.rulesets.ashrae9012019.ruleset_functions.get_swh_uses_associated_with_each_building_segment import ( | ||
get_swh_uses_associated_with_each_building_segment, | ||
) | ||
from rct229.schema.schema_utils import quantify_rmd | ||
from rct229.schema.validate import schema_validate_rmd | ||
|
||
TEST_RMD = { | ||
"id": "test_rmd", | ||
"buildings": [ | ||
{ | ||
"id": "Building 1", | ||
"building_open_schedule": "Required Building Schedule 1", | ||
"building_segments": [ | ||
{ | ||
"id": "Building Segment 1", | ||
"zones": [ | ||
{ | ||
"id": "Zone 1", | ||
"spaces": [ | ||
{ | ||
"id": "Space 1", | ||
"service_water_heating_uses": [ | ||
{"id": "service water heating uses 1"}, | ||
{"id": "service water heating uses 2"}, | ||
], | ||
}, | ||
], | ||
} | ||
], | ||
} | ||
], | ||
} | ||
], | ||
"type": "BASELINE_0", | ||
} | ||
|
||
TEST_RPD_FULL = { | ||
"id": "229", | ||
"ruleset_model_descriptions": [TEST_RMD], | ||
"data_timestamp": "2024-02-12T09:00Z", | ||
} | ||
|
||
TEST_RMD = quantify_rmd(TEST_RPD_FULL)["ruleset_model_descriptions"][0] | ||
|
||
|
||
def test__TEST_RPD__is_valid(): | ||
schema_validation_result = schema_validate_rmd(TEST_RPD_FULL) | ||
assert schema_validation_result[ | ||
"passed" | ||
], f"Schema error: {schema_validation_result['error']}" | ||
|
||
|
||
def test__get_swh_uses_associated_with_each_building_segment__bldg_segment_ids_exist(): | ||
assert get_swh_uses_associated_with_each_building_segment( | ||
TEST_RMD, "Building Segment 1" | ||
) == ["service water heating uses 1", "service water heating uses 2"] | ||
|
||
|
||
def test__get_swh_uses_associated_with_each_building_segment__bldg_segment_id_not_exist(): | ||
assert ( | ||
get_swh_uses_associated_with_each_building_segment( | ||
TEST_RMD, "Building Segment 2" | ||
) | ||
== [] | ||
) |