From 1b26b1288f64aeb22dd5c024a8096809b13e77d6 Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Thu, 23 May 2024 13:04:40 +0200 Subject: [PATCH] `ConnectorValidationUtils` checks if parallel devices is > 0 --- CHANGELOG.md | 1 + .../validation/ConnectorValidationUtils.java | 18 ++++++++++++++++++ .../ConnectorValidationUtilsTest.groovy | 17 +++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10822aede..1355759e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Enhancing `VoltageLevel` with `equals` method [#1063](https://github.com/ie3-institute/PowerSystemDataModel/issues/1063) +- `ConnectorValidationUtils` checks if parallel devices is > 0 [#1077](https://github.com/ie3-institute/PowerSystemDataModel/issues/1077) ### Fixed - Fixed `MappingEntryies` not getting processed by adding `Getter` methods for record fields [#1084](https://github.com/ie3-institute/PowerSystemDataModel/issues/1084) diff --git a/src/main/java/edu/ie3/datamodel/utils/validation/ConnectorValidationUtils.java b/src/main/java/edu/ie3/datamodel/utils/validation/ConnectorValidationUtils.java index dddf51f61..a2ac685c8 100644 --- a/src/main/java/edu/ie3/datamodel/utils/validation/ConnectorValidationUtils.java +++ b/src/main/java/edu/ie3/datamodel/utils/validation/ConnectorValidationUtils.java @@ -65,6 +65,7 @@ protected static List> check(ConnectorInput co List> exceptions = new ArrayList<>(); exceptions.add(connectsDifferentNodes(connector)); + exceptions.add(lessThanOneParallelDevice(connector)); // Further checks for subclasses if (LineInput.class.isAssignableFrom(connector.getClass())) { @@ -443,6 +444,23 @@ private static Try connectsDifferentNodes( connectorInput)); } + /** + * Check that the given connector has at least one parallel device. + * + * @param connectorInput to check + * @return a try + */ + private static Try lessThanOneParallelDevice( + ConnectorInput connectorInput) { + return Try.ofVoid( + connectorInput.getParallelDevices() < 1, + () -> + new InvalidEntityException( + connectorInput.getClass().getSimpleName() + + " needs to have at least one parallel device", + connectorInput)); + } + /** * Check if subnets of connector's nodes are correct depending on if they should be equal or not * diff --git a/src/test/groovy/edu/ie3/datamodel/utils/validation/ConnectorValidationUtilsTest.groovy b/src/test/groovy/edu/ie3/datamodel/utils/validation/ConnectorValidationUtilsTest.groovy index 913ed199c..c41384857 100644 --- a/src/test/groovy/edu/ie3/datamodel/utils/validation/ConnectorValidationUtilsTest.groovy +++ b/src/test/groovy/edu/ie3/datamodel/utils/validation/ConnectorValidationUtilsTest.groovy @@ -62,6 +62,23 @@ class ConnectorValidationUtilsTest extends Specification { OlmCharacteristicInput.CONSTANT_CHARACTERISTIC ) + def "A ConnectorInput needs at least one parallel device"() { + when: + def actual = ConnectorValidationUtils.lessThanOneParallelDevice(invalidConnector) + + then: + actual.failure + actual.exception.get().class == InvalidEntityException + actual.exception.get().message.contains(expectedMessage) + + where: + invalidConnector || expectedMessage + GridTestData.lineFtoG.copy().parallelDevices(0).build() || "LineInput needs to have at least one parallel device" + GridTestData.lineCtoD.copy().parallelDevices(-1).build() || "LineInput needs to have at least one parallel device" + GridTestData.transformerBtoE.copy().parallelDevices(0).build() || "Transformer2WInput needs to have at least one parallel device" + GridTestData.transformerAtoBtoC.copy().parallelDevices(0).build() || "Transformer3WInput needs to have at least one parallel device" + } + def "ConnectorValidationUtils.checkLine() recognizes all potential errors for a line"() { when: List> exceptions = ConnectorValidationUtils.check(invalidLine).stream().filter { it -> it.failure }.toList()