Skip to content

Commit bc085bc

Browse files
committed
abcd
Signed-off-by: zhen0427 <Zhen.Wang@alliander.com>
1 parent ebbe224 commit bc085bc

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

tests/unit/validation/test_validation_functions.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from power_grid_model.validation import assert_valid_input_data
1717
from power_grid_model.validation._validation import (
1818
assert_valid_data_structure,
19+
validate_generic_current_sensor,
1920
validate_generic_power_sensor,
2021
validate_ids,
2122
validate_input_data,
@@ -213,6 +214,12 @@ def test_validate_required_values_sym_calculation(calculation_type, symmetric):
213214
asym_power_sensor["p_measured"] = [[np.nan, 2.0, 1.0]]
214215
asym_power_sensor["q_measured"] = [[2.0, 1.0, np.nan]]
215216

217+
sym_current_sensor = initialize_array("input", "sym_current_sensor", 1)
218+
219+
asym_current_sensor = initialize_array("input", "asym_current_sensor", 1)
220+
asym_current_sensor["i_measured"] = [[np.nan, 2.0, 1.0]]
221+
asym_current_sensor["i_angle_measured"] = [[2.0, 1.0, np.nan]]
222+
216223
fault = initialize_array("input", "fault", 1)
217224

218225
data = {
@@ -231,6 +238,8 @@ def test_validate_required_values_sym_calculation(calculation_type, symmetric):
231238
"asym_voltage_sensor": asym_voltage_sensor,
232239
"sym_power_sensor": sym_power_sensor,
233240
"asym_power_sensor": asym_power_sensor,
241+
"sym_current_sensor": sym_current_sensor,
242+
"asym_current_sensor": asym_current_sensor,
234243
"fault": fault,
235244
}
236245
required_values_errors = validate_required_values(data=data, calculation_type=calculation_type, symmetric=symmetric)
@@ -382,6 +391,28 @@ def test_validate_required_values_sym_calculation(calculation_type, symmetric):
382391
assert (MissingValueError("asym_power_sensor", "p_measured", [NaN]) in required_values_errors) == se_dependent
383392
assert (MissingValueError("asym_power_sensor", "q_measured", [NaN]) in required_values_errors) == se_dependent
384393

394+
assert MissingValueError("sym_current_sensor", "id", [NaN]) in required_values_errors
395+
assert MissingValueError("sym_current_sensor", "measured_object", [NaN]) in required_values_errors
396+
assert MissingValueError("sym_current_sensor", "measured_terminal_type", [NaN]) in required_values_errors
397+
assert MissingValueError("sym_current_sensor", "angle_measurement_type", [NaN]) in required_values_errors
398+
assert (MissingValueError("sym_current_sensor", "i_measured", [NaN]) in required_values_errors) == se_dependent
399+
assert (
400+
MissingValueError("sym_current_sensor", "i_angle_measured", [NaN]) in required_values_errors
401+
) == se_dependent
402+
assert (MissingValueError("sym_current_sensor", "i_sigma", [NaN]) in required_values_errors) == se_dependent
403+
assert (MissingValueError("sym_current_sensor", "i_angle_sigma", [NaN]) in required_values_errors) == se_dependent
404+
405+
assert MissingValueError("asym_current_sensor", "id", [NaN]) in required_values_errors
406+
assert MissingValueError("asym_current_sensor", "measured_object", [NaN]) in required_values_errors
407+
assert MissingValueError("asym_current_sensor", "measured_terminal_type", [NaN]) in required_values_errors
408+
assert MissingValueError("asym_current_sensor", "angle_measurement_type", [NaN]) in required_values_errors
409+
assert (MissingValueError("asym_current_sensor", "i_measured", [NaN]) in required_values_errors) == se_dependent
410+
assert (
411+
MissingValueError("asym_current_sensor", "i_angle_measured", [NaN]) in required_values_errors
412+
) == se_dependent
413+
assert (MissingValueError("asym_current_sensor", "i_sigma", [NaN]) in required_values_errors) == se_dependent
414+
assert (MissingValueError("asym_current_sensor ", "i_angle_sigma", [NaN]) in required_values_errors) == se_dependent
415+
385416
assert MissingValueError("fault", "id", [NaN]) in required_values_errors
386417
assert (MissingValueError("fault", "status", [NaN]) in required_values_errors) == sc_dependent
387418
assert (MissingValueError("fault", "fault_type", [NaN]) in required_values_errors) == sc_dependent
@@ -464,6 +495,10 @@ def test_validate_values__calculation_types():
464495
("asym_voltage_sensor", "u_sigma"),
465496
("sym_power_sensor", "power_sigma"),
466497
("asym_power_sensor", "power_sigma"),
498+
("sym_current_sensor", "i_sigma"),
499+
("sym_current_sensor", "i_angle_sigma"),
500+
("asym_current_sensor", "i_sigma"),
501+
("asym_current_sensor", "i_angle_sigma"),
467502
],
468503
)
469504
def test_validate_values__infinite_sigmas(sensor_type, parameter):
@@ -718,6 +753,66 @@ def test_validate_generic_power_sensor__terminal_types(
718753
)
719754

720755

756+
@pytest.mark.parametrize(
757+
"measured_terminal_type",
758+
[
759+
MeasuredTerminalType.branch_from,
760+
MeasuredTerminalType.branch_to,
761+
MeasuredTerminalType.branch3_1,
762+
MeasuredTerminalType.branch3_2,
763+
MeasuredTerminalType.branch3_3,
764+
],
765+
)
766+
@patch("power_grid_model.validation._validation.validate_base", new=MagicMock())
767+
@patch("power_grid_model.validation._validation._all_greater_than_zero", new=MagicMock())
768+
@patch("power_grid_model.validation._validation._all_valid_enum_values", new=MagicMock())
769+
@patch("power_grid_model.validation._validation._all_valid_ids")
770+
def test_validate_generic_current_sensor__all_terminal_types(
771+
_all_valid_ids: MagicMock, measured_terminal_type: MeasuredTerminalType
772+
):
773+
# Act
774+
validate_generic_current_sensor(data={}, component="") # type: ignore
775+
776+
# Assert
777+
_all_valid_ids.assert_any_call(
778+
ANY,
779+
ANY,
780+
field=ANY,
781+
ref_components=ANY,
782+
measured_terminal_type=measured_terminal_type,
783+
)
784+
785+
786+
@pytest.mark.parametrize(
787+
("ref_component", "measured_terminal_type"),
788+
[
789+
(["line", "generic_branch", "transformer"], MeasuredTerminalType.branch_from),
790+
(["line", "generic_branch", "transformer"], MeasuredTerminalType.branch_to),
791+
("three_winding_transformer", MeasuredTerminalType.branch3_1),
792+
("three_winding_transformer", MeasuredTerminalType.branch3_2),
793+
("three_winding_transformer", MeasuredTerminalType.branch3_3),
794+
],
795+
)
796+
@patch("power_grid_model.validation._validation.validate_base", new=MagicMock())
797+
@patch("power_grid_model.validation._validation._all_greater_than_zero", new=MagicMock())
798+
@patch("power_grid_model.validation._validation._all_valid_enum_values", new=MagicMock())
799+
@patch("power_grid_model.validation._validation._all_valid_ids")
800+
def test_validate_generic_current_sensor__terminal_types(
801+
_all_valid_ids: MagicMock, ref_component: str | list[str], measured_terminal_type: MeasuredTerminalType
802+
):
803+
# Act
804+
validate_generic_current_sensor(data={}, component="") # type: ignore
805+
806+
# Assert
807+
_all_valid_ids.assert_any_call(
808+
ANY,
809+
ANY,
810+
field=ANY,
811+
ref_components=ref_component,
812+
measured_terminal_type=measured_terminal_type,
813+
)
814+
815+
721816
def test_power_sigma_or_p_q_sigma():
722817
# node
723818
node = initialize_array("input", "node", 2)

0 commit comments

Comments
 (0)