From 4e8292287add94eb0887a4c27310cef637a56292 Mon Sep 17 00:00:00 2001 From: Thomas Bouquet <63302082+bqth29@users.noreply.github.com> Date: Thu, 24 Oct 2024 09:23:47 +0200 Subject: [PATCH] [CSA] No longer read AE.isCombinableWithRemedialAction attribute (#1130) * No longer read attribute Signed-off-by: Thomas Bouquet * Add geo filter Signed-off-by: Thomas Bouquet * remove geographical filter Signed-off-by: Thomas Bouquet * remove getBranchLocation Signed-off-by: Thomas Bouquet * sonar Signed-off-by: Thomas Bouquet --------- Signed-off-by: Thomas Bouquet Co-authored-by: jipea <95865644+jipea@users.noreply.github.com> --- .../cnec/CsaProfileCnecCreator.java | 2 - .../craccreator/cnec/FlowCnecCreator.java | 8 +- .../CsaProfileRemedialActionsCreator.java | 6 +- .../OnConstraintUsageRuleHelper.java | 84 ++++------ .../csaprofiles/nc/AssessedElement.java | 7 +- .../src/main/resources/csa_profile.sparql | 3 - .../cnec/AngleCnecCreationTest.java | 2 - .../cnec/FlowCnecCreationTest.java | 28 +--- .../cnec/VoltageCnecCreationTest.java | 4 +- .../OnConstraintUsageRuleHelperTest.java | 40 +---- .../RemedialActionCreationTest.java | 158 +----------------- 11 files changed, 70 insertions(+), 272 deletions(-) diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/CsaProfileCnecCreator.java b/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/CsaProfileCnecCreator.java index af220fca32..ce3ed6a0b6 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/CsaProfileCnecCreator.java +++ b/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/CsaProfileCnecCreator.java @@ -46,7 +46,6 @@ public class CsaProfileCnecCreator { private Set csaProfileCnecCreationContexts; private final CsaProfileCracCreationContext cracCreationContext; private final CracCreationParameters cracCreationParameters; - private final String regionEic; private final Map borderPerTso; private final Map borderPerEic; @@ -60,7 +59,6 @@ public CsaProfileCnecCreator(Crac crac, Network network, CsaProfileCrac nativeCr this.nativeVoltageAngleLimitPerId = nativeCrac.getVoltageAngleLimits().stream().collect(Collectors.toMap(VoltageAngleLimit::mrid, voltageAngleLimit -> voltageAngleLimit)); this.cracCreationContext = cracCreationContext; this.cracCreationParameters = cracCreationParameters; - this.regionEic = cracCreationParameters.getExtension(CsaCracCreationParameters.class).getCapacityCalculationRegionEicCode(); this.borderPerTso = cracCreationParameters.getExtension(CsaCracCreationParameters.class).getBorders().stream().collect(Collectors.toMap(Border::defaultForTso, Border::name)); this.borderPerEic = cracCreationParameters.getExtension(CsaCracCreationParameters.class).getBorders().stream().collect(Collectors.toMap(Border::eic, Border::name)); this.createAndAddCnecs(); diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/FlowCnecCreator.java b/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/FlowCnecCreator.java index c9933d9806..6848c5c4e1 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/FlowCnecCreator.java +++ b/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/FlowCnecCreator.java @@ -227,10 +227,10 @@ private void addAllFlowCnecsFromBranchAndOperationalLimits(Branch networkElem twoSides -> operatorDoesNotUsePatlInFinalState && (networkElement.getCurrentLimits(twoSides).isEmpty() || networkElement.getCurrentLimits(twoSides).isPresent() && networkElement.getCurrentLimits(twoSides).get().getTemporaryLimits().isEmpty()))); - for (Contingency contingency : linkedContingencies) { - thresholds.forEach((acceptableDuration, limitThresholds) -> - limitThresholds.forEach((twoSides, threshold) -> addCurativeFlowCnec(networkElement, useMaxAndMinThresholds, instantToDurationMaps, forceUseOfPatl, contingency, acceptableDuration, twoSides, threshold))); - } + linkedContingencies.forEach( + contingency -> thresholds.forEach( + (acceptableDuration, limitThresholds) -> limitThresholds.forEach( + (twoSides, threshold) -> addCurativeFlowCnec(networkElement, useMaxAndMinThresholds, instantToDurationMaps, forceUseOfPatl, contingency, acceptableDuration, twoSides, threshold)))); } } diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/CsaProfileRemedialActionsCreator.java b/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/CsaProfileRemedialActionsCreator.java index 5f90c60006..19d82d4a7d 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/CsaProfileRemedialActionsCreator.java +++ b/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/CsaProfileRemedialActionsCreator.java @@ -148,7 +148,7 @@ private void addUsageRules(String remedialActionId, Set nativeAssessedElements, Set linkedAssessedElementWithRemedialActions, Set linkedContingencyWithRemedialActions, Set cnecCreationContexts, RemedialActionAdder remedialActionAdder, List alterations, Instant instant, boolean isSchemeRemedialAction, RemedialActionType remedialActionType) { - if (addOnConstraintUsageRules(remedialActionId, nativeAssessedElements, linkedAssessedElementWithRemedialActions, linkedContingencyWithRemedialActions, cnecCreationContexts, remedialActionAdder, alterations, instant, isSchemeRemedialAction, remedialActionType)) { + if (addOnConstraintUsageRules(remedialActionId, linkedAssessedElementWithRemedialActions, linkedContingencyWithRemedialActions, cnecCreationContexts, remedialActionAdder, alterations, instant, isSchemeRemedialAction, remedialActionType)) { return; } if (addOnContingencyStateUsageRules(remedialActionId, linkedContingencyWithRemedialActions, remedialActionAdder, alterations, instant, isSchemeRemedialAction, remedialActionType)) { @@ -158,10 +158,10 @@ private void addUsageRules(String } private boolean addOnConstraintUsageRules(String - remedialActionId, Set nativeAssessedElements, Set linkedAssessedElementWithRemedialActions, Set linkedContingencyWithRemedialActions, Set cnecCreationContexts, RemedialActionAdder + remedialActionId, Set linkedAssessedElementWithRemedialActions, Set linkedContingencyWithRemedialActions, Set cnecCreationContexts, RemedialActionAdder remedialActionAdder, List alterations, Instant instant, boolean isSchemeRemedialAction, RemedialActionType remedialActionType) { - Map cnecStatusMap = OnConstraintUsageRuleHelper.processCnecsLinkedToRemedialAction(crac, remedialActionId, nativeAssessedElements, linkedAssessedElementWithRemedialActions, linkedContingencyWithRemedialActions, cnecCreationContexts); + Map cnecStatusMap = OnConstraintUsageRuleHelper.processCnecsLinkedToRemedialAction(crac, remedialActionId, linkedAssessedElementWithRemedialActions, linkedContingencyWithRemedialActions, cnecCreationContexts); cnecStatusMap.forEach((cnecId, cnecStatus) -> { if (cnecStatus.isValid()) { Cnec cnec = crac.getCnec(cnecId); diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/OnConstraintUsageRuleHelper.java b/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/OnConstraintUsageRuleHelper.java index 1b4734868b..85ac753cba 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/OnConstraintUsageRuleHelper.java +++ b/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/OnConstraintUsageRuleHelper.java @@ -11,13 +11,12 @@ import com.powsybl.openrao.data.cracapi.cnec.Cnec; import com.powsybl.openrao.data.cracio.commons.api.ElementaryCreationContext; import com.powsybl.openrao.data.cracio.csaprofiles.craccreator.constants.ElementCombinationConstraintKind; -import com.powsybl.openrao.data.cracio.csaprofiles.nc.AssessedElement; import com.powsybl.openrao.data.cracio.csaprofiles.nc.AssessedElementWithRemedialAction; import com.powsybl.openrao.data.cracio.csaprofiles.nc.ContingencyWithRemedialAction; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -34,73 +33,62 @@ public static Set getImportedCnecFromAssessedElementId(String assessedElem return cnecCreationContexts.stream().filter(context -> context.isImported() && assessedElementId.equals(context.getNativeObjectId())).map(context -> crac.getCnec(context.getCreatedObjectId())).collect(Collectors.toSet()); } - public static Set getCnecsBuiltFromAssessedElementsCombinableWithRemedialActions(Crac crac, Set cnecCreationContexts, Set nativeAssessedElements) { - Set cnecsCombinableWithRemedialActions = new HashSet<>(); - nativeAssessedElements.stream().filter(AssessedElement::isCombinableWithRemedialAction).forEach(nativeAssessedElement -> cnecsCombinableWithRemedialActions.addAll(getImportedCnecFromAssessedElementId(nativeAssessedElement.mrid(), crac, cnecCreationContexts))); - return cnecsCombinableWithRemedialActions; - } - public static Set filterCnecsThatHaveGivenContingencies(Set cnecs, Set contingenciesIds) { return cnecs.stream().filter(cnec -> cnec.getState().getContingency().isPresent() && contingenciesIds.contains(cnec.getState().getContingency().get().getId())).collect(Collectors.toSet()); } - public static Map processCnecsLinkedToRemedialAction(Crac crac, String remedialActionId, Set nativeAssessedElements, Set linkedAssessedElementWithRemedialActions, Set linkedContingencyWithRemedialActions, Set cnecCreationContexts) { + public static Map processCnecsLinkedToRemedialAction(Crac crac, String remedialActionId, Set linkedAssessedElementWithRemedialActions, Set linkedContingencyWithRemedialActions, Set cnecCreationContexts) { Map contingencyStatusMap = OnContingencyStateUsageRuleHelper.processContingenciesLinkedToRemedialAction(crac, remedialActionId, linkedContingencyWithRemedialActions); Map cnecStatusMap = new HashMap<>(); - Set cnecsCombinableWithRemedialAction = getCnecsBuiltFromAssessedElementsCombinableWithRemedialActions(crac, cnecCreationContexts, nativeAssessedElements); Map validContingenciesUsageRules = contingencyStatusMap.entrySet().stream().filter(entry -> entry.getValue().isValid()).collect(Collectors.toMap(Map.Entry::getKey, entry -> entry.getValue().elementCombinationConstraintKind())); for (AssessedElementWithRemedialAction nativeAssessedElementWithRemedialAction : linkedAssessedElementWithRemedialActions) { Set cnecs = contingencyStatusMap.isEmpty() ? getImportedCnecFromAssessedElementId(nativeAssessedElementWithRemedialAction.assessedElement(), crac, cnecCreationContexts) : filterCnecsThatHaveGivenContingencies(getImportedCnecFromAssessedElementId(nativeAssessedElementWithRemedialAction.assessedElement(), crac, cnecCreationContexts), validContingenciesUsageRules.keySet()); - if (cnecStatusMap.containsKey(nativeAssessedElementWithRemedialAction.assessedElement()) || cnecs.stream().anyMatch(cnec -> cnecStatusMap.containsKey(cnec.getId()))) { - cnecStatusMap.put(nativeAssessedElementWithRemedialAction.assessedElement(), new AssociationStatus(false, null, "OnConstraint usage rule for remedial action %s with assessed element %s ignored because this assessed element has several conflictual links to the remedial action.".formatted(remedialActionId, nativeAssessedElementWithRemedialAction.assessedElement()))); - cnecs.stream().map(Cnec::getId).forEach(cnecStatusMap::remove); + if (isAssociationInvalid(remedialActionId, cnecStatusMap, nativeAssessedElementWithRemedialAction, cnecs)) { continue; } - cnecsCombinableWithRemedialAction.removeAll(cnecs); - - if (cnecs.isEmpty()) { - cnecStatusMap.put(nativeAssessedElementWithRemedialAction.assessedElement(), new AssociationStatus(false, null, "OnConstraint usage rule for remedial action %s with assessed element %s ignored because no CNEC was imported by Open RAO from this assessed element.".formatted(remedialActionId, nativeAssessedElementWithRemedialAction.assessedElement()))); - continue; - } + ElementCombinationConstraintKind combinationConstraintKind = ElementCombinationConstraintKind.INCLUDED.toString().equals(nativeAssessedElementWithRemedialAction.combinationConstraintKind()) ? ElementCombinationConstraintKind.INCLUDED : ElementCombinationConstraintKind.CONSIDERED; + cnecs.forEach(cnec -> handleLinkedContingencies(remedialActionId, cnecStatusMap, validContingenciesUsageRules, nativeAssessedElementWithRemedialAction, combinationConstraintKind, cnec)); + } - if (!nativeAssessedElementWithRemedialAction.normalEnabled()) { - cnecStatusMap.put(nativeAssessedElementWithRemedialAction.assessedElement(), new AssociationStatus(false, null, "OnConstraint usage rule for remedial action %s with assessed element %s ignored because the association is disabled.".formatted(remedialActionId, nativeAssessedElementWithRemedialAction.assessedElement()))); - continue; - } + return cnecStatusMap; + } - if (!ElementCombinationConstraintKind.INCLUDED.toString().equals(nativeAssessedElementWithRemedialAction.combinationConstraintKind()) && !ElementCombinationConstraintKind.CONSIDERED.toString().equals(nativeAssessedElementWithRemedialAction.combinationConstraintKind())) { - cnecStatusMap.put(nativeAssessedElementWithRemedialAction.assessedElement(), new AssociationStatus(false, null, "OnConstraint usage rule for remedial action %s with assessed element %s ignored because of an illegal combinationConstraintKind.".formatted(remedialActionId, nativeAssessedElementWithRemedialAction.assessedElement()))); - continue; - } + private static boolean isAssociationInvalid(String remedialActionId, Map cnecStatusMap, AssessedElementWithRemedialAction nativeAssessedElementWithRemedialAction, Set cnecs) { + if (cnecStatusMap.containsKey(nativeAssessedElementWithRemedialAction.assessedElement()) || cnecs.stream().anyMatch(cnec -> cnecStatusMap.containsKey(cnec.getId()))) { + cnecStatusMap.put(nativeAssessedElementWithRemedialAction.assessedElement(), new AssociationStatus(false, null, "OnConstraint usage rule for remedial action %s with assessed element %s ignored because this assessed element has several conflictual links to the remedial action.".formatted(remedialActionId, nativeAssessedElementWithRemedialAction.assessedElement()))); + cnecs.stream().map(Cnec::getId).forEach(cnecStatusMap::remove); + return true; + } - ElementCombinationConstraintKind combinationConstraintKind = ElementCombinationConstraintKind.INCLUDED.toString().equals(nativeAssessedElementWithRemedialAction.combinationConstraintKind()) ? ElementCombinationConstraintKind.INCLUDED : ElementCombinationConstraintKind.CONSIDERED; + if (cnecs.isEmpty()) { + cnecStatusMap.put(nativeAssessedElementWithRemedialAction.assessedElement(), new AssociationStatus(false, null, "OnConstraint usage rule for remedial action %s with assessed element %s ignored because no CNEC was imported by Open RAO from this assessed element.".formatted(remedialActionId, nativeAssessedElementWithRemedialAction.assessedElement()))); + return true; + } - cnecs.forEach( - cnec -> { - if (cnec.getState().getContingency().isPresent()) { - Contingency contingency = cnec.getState().getContingency().get(); - if (validContingenciesUsageRules.containsKey(contingency.getId()) && combinationConstraintKind != validContingenciesUsageRules.get(contingency.getId())) { - cnecStatusMap.put(cnec.getId(), new AssociationStatus(false, null, "OnConstraint usage rule for remedial action %s with CNEC %s ignored because the combinationConstraintKinds between of the AssessedElementWithRemedialAction for assessed element %s and the ContingencyWithRemedialAction for contingency %s are different.".formatted(remedialActionId, cnec.getId(), nativeAssessedElementWithRemedialAction.assessedElement(), contingency.getId()))); - return; - } - } - cnecStatusMap.put(cnec.getId(), new AssociationStatus(true, combinationConstraintKind, "")); - } - ); + if (!nativeAssessedElementWithRemedialAction.normalEnabled()) { + cnecStatusMap.put(nativeAssessedElementWithRemedialAction.assessedElement(), new AssociationStatus(false, null, "OnConstraint usage rule for remedial action %s with assessed element %s ignored because the association is disabled.".formatted(remedialActionId, nativeAssessedElementWithRemedialAction.assessedElement()))); + return true; } - // Add CNECs built from AssessedElements which are combinable with remedial actions - if (contingencyStatusMap.isEmpty()) { - // The remedial action is not associated to contingencies - cnecsCombinableWithRemedialAction.forEach(cnec -> cnecStatusMap.put(cnec.getId(), new AssociationStatus(true, ElementCombinationConstraintKind.CONSIDERED, ""))); - } else { - // The remedial action is associated to contingencies (valid or not) - filterCnecsThatHaveGivenContingencies(cnecsCombinableWithRemedialAction, validContingenciesUsageRules.keySet()).forEach(cnec -> cnecStatusMap.put(cnec.getId(), new AssociationStatus(true, validContingenciesUsageRules.get(cnec.getState().getContingency().orElseThrow().getId()), ""))); + if (!ElementCombinationConstraintKind.INCLUDED.toString().equals(nativeAssessedElementWithRemedialAction.combinationConstraintKind()) && !ElementCombinationConstraintKind.CONSIDERED.toString().equals(nativeAssessedElementWithRemedialAction.combinationConstraintKind())) { + cnecStatusMap.put(nativeAssessedElementWithRemedialAction.assessedElement(), new AssociationStatus(false, null, "OnConstraint usage rule for remedial action %s with assessed element %s ignored because of an illegal combinationConstraintKind.".formatted(remedialActionId, nativeAssessedElementWithRemedialAction.assessedElement()))); + return true; } + return false; + } - return cnecStatusMap; + private static void handleLinkedContingencies(String remedialActionId, Map cnecStatusMap, Map validContingenciesUsageRules, AssessedElementWithRemedialAction nativeAssessedElementWithRemedialAction, ElementCombinationConstraintKind combinationConstraintKind, Cnec cnec) { + Optional optionalContingency = cnec.getState().getContingency(); + if (optionalContingency.isPresent()) { + Contingency contingency = optionalContingency.get(); + if (validContingenciesUsageRules.containsKey(contingency.getId()) && combinationConstraintKind != validContingenciesUsageRules.get(contingency.getId())) { + cnecStatusMap.put(cnec.getId(), new AssociationStatus(false, null, "OnConstraint usage rule for remedial action %s with CNEC %s ignored because the combinationConstraintKinds between of the AssessedElementWithRemedialAction for assessed element %s and the ContingencyWithRemedialAction for contingency %s are different.".formatted(remedialActionId, cnec.getId(), nativeAssessedElementWithRemedialAction.assessedElement(), contingency.getId()))); + return; + } + } + cnecStatusMap.put(cnec.getId(), new AssociationStatus(true, combinationConstraintKind, "")); } } diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/nc/AssessedElement.java b/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/nc/AssessedElement.java index 3ae5ade581..d096751dde 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/nc/AssessedElement.java +++ b/data/crac/crac-io/crac-io-csa-profiles/src/main/java/com/powsybl/openrao/data/cracio/csaprofiles/nc/AssessedElement.java @@ -12,7 +12,11 @@ /** * @author Thomas Bouquet {@literal } */ -public record AssessedElement(String mrid, boolean inBaseCase, String name, String operator, String conductingEquipment, String operationalLimit, boolean isCombinableWithContingency, boolean isCombinableWithRemedialAction, boolean normalEnabled, String securedForRegion, String scannedForRegion, double flowReliabilityMargin, String overlappingZone) implements IdentifiedObjectWithOperator { +public record AssessedElement(String mrid, boolean inBaseCase, String name, String operator, String conductingEquipment, + String operationalLimit, boolean isCombinableWithContingency, + boolean normalEnabled, String securedForRegion, String scannedForRegion, + double flowReliabilityMargin, + String overlappingZone) implements IdentifiedObjectWithOperator { public static AssessedElement fromPropertyBag(PropertyBag propertyBag) { return new AssessedElement( propertyBag.getId(CsaProfileConstants.REQUEST_ASSESSED_ELEMENT), @@ -22,7 +26,6 @@ public static AssessedElement fromPropertyBag(PropertyBag propertyBag) { propertyBag.getId(CsaProfileConstants.REQUEST_ASSESSED_ELEMENT_CONDUCTING_EQUIPMENT), propertyBag.getId(CsaProfileConstants.REQUEST_ASSESSED_ELEMENT_OPERATIONAL_LIMIT), Boolean.parseBoolean(propertyBag.getOrDefault(CsaProfileConstants.REQUEST_ASSESSED_ELEMENT_IS_COMBINABLE_WITH_CONTINGENCY, "false")), - Boolean.parseBoolean(propertyBag.getOrDefault(CsaProfileConstants.REQUEST_ASSESSED_ELEMENT_IS_COMBINABLE_WITH_REMEDIAL_ACTION, "false")), Boolean.parseBoolean(propertyBag.getOrDefault(CsaProfileConstants.REQUEST_ASSESSED_ELEMENT_NORMAL_ENABLED, "true")), propertyBag.get(CsaProfileConstants.REQUEST_ASSESSED_ELEMENT_SECURED_FOR_REGION), propertyBag.get(CsaProfileConstants.REQUEST_ASSESSED_ELEMENT_SCANNED_FOR_REGION), diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/main/resources/csa_profile.sparql b/data/crac/crac-io/crac-io-csa-profiles/src/main/resources/csa_profile.sparql index dedfbb657d..58e8a2c041 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/main/resources/csa_profile.sparql +++ b/data/crac/crac-io/crac-io-csa-profiles/src/main/resources/csa_profile.sparql @@ -120,9 +120,6 @@ GRAPH <%s> { OPTIONAL { ?assessedElement nc:AssessedElement.ScannedForRegion ?scannedForRegion . } - OPTIONAL { - ?assessedElement nc:AssessedElement.isCombinableWithRemedialAction ?isCombinableWithRemedialAction ; - } OPTIONAL { ?assessedElement nc:AssessedElement.flowReliabilityMargin ?flowReliabilityMargin . } diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/AngleCnecCreationTest.java b/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/AngleCnecCreationTest.java index 55fa4193af..a524e6d754 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/AngleCnecCreationTest.java +++ b/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/AngleCnecCreationTest.java @@ -150,7 +150,5 @@ void importAngleCnecs() { assertCnecNotImported(cracCreationContext, "assessed-element-13", ImportStatus.INCONSISTENCY_IN_DATA, "AssessedElement assessed-element-13 ignored because the network element FFR2AA1 _generator is not a bus bar section"); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.FORCED, AngleCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE2 (assessed-element-2) - RTE_CO1 - curative 3", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.AVAILABLE, AngleCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE2 (assessed-element-2) - RTE_CO2 - curative 3", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.AVAILABLE, AngleCnec.class); } } diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/FlowCnecCreationTest.java b/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/FlowCnecCreationTest.java index 7e389ef5ba..e908694340 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/FlowCnecCreationTest.java +++ b/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/FlowCnecCreationTest.java @@ -758,7 +758,7 @@ void importFlowCnecs() { assertCnecNotImported(cracCreationContext, "assessed-element-13", ImportStatus.INCONSISTENCY_IN_DATA, "AssessedElement assessed-element-13 ignored because the assessed element is not in base case and not combinable with contingencies, but no explicit link to a contingency was found"); assertCnecNotImported(cracCreationContext, "assessed-element-14", ImportStatus.INCONSISTENCY_IN_DATA, "AssessedElement assessed-element-14 ignored because the network element FFR1AA1 _generator is not a branch"); - assertEquals(15, cracCreationContext.getCrac().getRemedialAction("remedial-action-1").getUsageRules().size()); + assertEquals(5, cracCreationContext.getCrac().getRemedialAction("remedial-action-1").getUsageRules().size()); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_1_INSTANT_ID), UsageMethod.FORCED, FlowCnec.class); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_1_INSTANT_ID), UsageMethod.FORCED, FlowCnec.class); @@ -766,35 +766,11 @@ void importFlowCnecs() { assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_2_INSTANT_ID), UsageMethod.FORCED, FlowCnec.class); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE4 (assessed-element-4) - RTE_CO1 - curative 2 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_1_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE4 (assessed-element-4) - RTE_CO1 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_1_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE4 (assessed-element-4) - RTE_CO1 - curative 2 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_2_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE4 (assessed-element-4) - RTE_CO1 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_2_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE4 (assessed-element-4) - RTE_CO1 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE4 (assessed-element-4) - RTE_CO2 - curative 2 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_1_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE4 (assessed-element-4) - RTE_CO2 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_1_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE4 (assessed-element-4) - RTE_CO2 - curative 2 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_2_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE4 (assessed-element-4) - RTE_CO2 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_2_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE4 (assessed-element-4) - RTE_CO2 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - - assertEquals(13, cracCreationContext.getCrac().getRemedialAction("remedial-action-2").getUsageRules().size()); + assertEquals(3, cracCreationContext.getCrac().getRemedialAction("remedial-action-2").getUsageRules().size()); assertHasOnInstantUsageRule(cracCreationContext, "remedial-action-2", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE); assertHasOnInstantUsageRule(cracCreationContext, "remedial-action-2", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE); assertHasOnInstantUsageRule(cracCreationContext, "remedial-action-2", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE); - - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE4 (assessed-element-4) - RTE_CO1 - curative 2 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_1_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE4 (assessed-element-4) - RTE_CO1 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_1_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE4 (assessed-element-4) - RTE_CO1 - curative 2 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_2_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE4 (assessed-element-4) - RTE_CO1 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_2_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE4 (assessed-element-4) - RTE_CO1 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE4 (assessed-element-4) - RTE_CO2 - curative 2 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_1_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE4 (assessed-element-4) - RTE_CO2 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_1_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE4 (assessed-element-4) - RTE_CO2 - curative 2 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_2_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE4 (assessed-element-4) - RTE_CO2 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_2_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE4 (assessed-element-4) - RTE_CO2 - curative 3 - TWO", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.AVAILABLE, FlowCnec.class); } @Test diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/VoltageCnecCreationTest.java b/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/VoltageCnecCreationTest.java index 73ad3975aa..125c3d81c6 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/VoltageCnecCreationTest.java +++ b/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/cnec/VoltageCnecCreationTest.java @@ -15,6 +15,7 @@ import static com.powsybl.openrao.data.cracio.csaprofiles.craccreator.CsaProfileCracCreationTestUtil.PREVENTIVE_INSTANT_ID; import static com.powsybl.openrao.data.cracio.csaprofiles.craccreator.CsaProfileCracCreationTestUtil.assertCnecNotImported; import static com.powsybl.openrao.data.cracio.csaprofiles.craccreator.CsaProfileCracCreationTestUtil.assertHasOnConstraintUsageRule; +import static com.powsybl.openrao.data.cracio.csaprofiles.craccreator.CsaProfileCracCreationTestUtil.assertHasOnInstantUsageRule; import static com.powsybl.openrao.data.cracio.csaprofiles.craccreator.CsaProfileCracCreationTestUtil.getCsaCracCreationContext; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -85,9 +86,8 @@ void importVoltageCnecs() { assertCnecNotImported(cracCreationContext, "assessed-element-6", ImportStatus.ELEMENT_NOT_FOUND_IN_NETWORK, "AssessedElement assessed-element-6 ignored because the voltage limit equipment unknown-equipment is missing in network"); assertCnecNotImported(cracCreationContext, "assessed-element-8", ImportStatus.INCOMPLETE_DATA, "AssessedElement assessed-element-8 ignored because no ConductingEquipment or OperationalLimit was provided"); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.AVAILABLE, VoltageCnec.class); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE2 (assessed-element-2) - RTE_CO1 - curative 3", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.FORCED, VoltageCnec.class); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE2 (assessed-element-2) - RTE_CO2 - curative 3", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.FORCED, VoltageCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.AVAILABLE, VoltageCnec.class); + assertHasOnInstantUsageRule(cracCreationContext, "remedial-action-2", cracCreationContext.getCrac().getInstant(CURATIVE_3_INSTANT_ID), UsageMethod.AVAILABLE); } } diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/OnConstraintUsageRuleHelperTest.java b/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/OnConstraintUsageRuleHelperTest.java index a362e541ca..935a9e6260 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/OnConstraintUsageRuleHelperTest.java +++ b/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/OnConstraintUsageRuleHelperTest.java @@ -33,7 +33,6 @@ class OnConstraintUsageRuleHelperTest { private Crac crac; private Set cnecCreationContexts; - private Set assessedElements; private Set assessedElementWithRemedialActions; private Set contingencyWithRemedialActions; @@ -102,15 +101,13 @@ void setUp() { // Add AssessedElement property bags - AssessedElement assessedElement1 = new AssessedElement("assessed-element-1", true, null, null, null, null, false, false, true, null, null, 0d, null); - AssessedElement assessedElement2 = new AssessedElement("assessed-element-2", true, null, null, null, null, false, true, true, null, null, 0d, null); - AssessedElement assessedElement3 = new AssessedElement("assessed-element-3", true, null, null, null, null, false, true, true, null, null, 0d, null); - AssessedElement assessedElement4 = new AssessedElement("assessed-element-4", true, null, null, null, null, false, false, true, null, null, 0d, null); - AssessedElement assessedElement5 = new AssessedElement("assessed-element-5", true, null, null, null, null, false, false, true, null, null, 0d, null); - AssessedElement assessedElement6 = new AssessedElement("assessed-element-6", true, null, null, null, null, false, false, true, null, null, 0d, null); - AssessedElement assessedElement8 = new AssessedElement("assessed-element-8", true, null, null, null, null, false, false, true, null, null, 0d, null); - - assessedElements = Set.of(assessedElement1, assessedElement2, assessedElement3, assessedElement4, assessedElement5, assessedElement6, assessedElement8); + AssessedElement assessedElement1 = new AssessedElement("assessed-element-1", true, null, null, null, null, false, true, null, null, 0d, null); + AssessedElement assessedElement2 = new AssessedElement("assessed-element-2", true, null, null, null, null, false, true, null, null, 0d, null); + AssessedElement assessedElement3 = new AssessedElement("assessed-element-3", true, null, null, null, null, false, true, null, null, 0d, null); + AssessedElement assessedElement4 = new AssessedElement("assessed-element-4", true, null, null, null, null, false, true, null, null, 0d, null); + AssessedElement assessedElement5 = new AssessedElement("assessed-element-5", true, null, null, null, null, false, true, null, null, 0d, null); + AssessedElement assessedElement6 = new AssessedElement("assessed-element-6", true, null, null, null, null, false, true, null, null, 0d, null); + AssessedElement assessedElement8 = new AssessedElement("assessed-element-8", true, null, null, null, null, false, true, null, null, 0d, null); // Add AssessedElementWithRemedialAction property bags @@ -144,14 +141,6 @@ void getImportedCnecFromAssessedElementId() { ); } - @Test - void getCnecsBuiltFromAssessedElementsCombinableWithRemedialActions() { - assertEquals( - Set.of(crac.getFlowCnec("Line 2 - preventive"), crac.getFlowCnec("Line 2 - curative - CO1"), crac.getFlowCnec("Line 2 - curative - CO2"), crac.getFlowCnec("Line 2 - curative - CO3"), crac.getFlowCnec("Line 2 - curative - CO4"), crac.getFlowCnec("Line 2 - curative - CO5"), crac.getFlowCnec("Line 2 - curative - CO6"), crac.getFlowCnec("Line 3 - preventive"), crac.getFlowCnec("Line 3 - curative - CO1"), crac.getFlowCnec("Line 3 - curative - CO2"), crac.getFlowCnec("Line 3 - curative - CO3"), crac.getFlowCnec("Line 3 - curative - CO4"), crac.getFlowCnec("Line 3 - curative - CO5"), crac.getFlowCnec("Line 3 - curative - CO6")), - OnConstraintUsageRuleHelper.getCnecsBuiltFromAssessedElementsCombinableWithRemedialActions(crac, cnecCreationContexts, assessedElements) - ); - } - @Test void filterCnecsThatHaveGivenContingencies() { assertEquals( @@ -168,17 +157,13 @@ void processCnecsLinkedToRemedialActionWithContingencies() { expectedResult.put("Line 2 - curative - CO2", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with CNEC Line 2 - curative - CO2 ignored because the combinationConstraintKinds between of the AssessedElementWithRemedialAction for assessed element assessed-element-2 and the ContingencyWithRemedialAction for contingency contingency-2 are different.")); expectedResult.put("Line 2 - curative - CO3", new AssociationStatus(true, ElementCombinationConstraintKind.INCLUDED, "")); expectedResult.put("Line 2 - curative - CO4", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with CNEC Line 2 - curative - CO4 ignored because the combinationConstraintKinds between of the AssessedElementWithRemedialAction for assessed element assessed-element-2 and the ContingencyWithRemedialAction for contingency contingency-4 are different.")); - expectedResult.put("Line 3 - curative - CO1", new AssociationStatus(true, ElementCombinationConstraintKind.INCLUDED, "")); - expectedResult.put("Line 3 - curative - CO2", new AssociationStatus(true, ElementCombinationConstraintKind.CONSIDERED, "")); - expectedResult.put("Line 3 - curative - CO3", new AssociationStatus(true, ElementCombinationConstraintKind.INCLUDED, "")); - expectedResult.put("Line 3 - curative - CO4", new AssociationStatus(true, ElementCombinationConstraintKind.CONSIDERED, "")); expectedResult.put("assessed-element-4", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with assessed element assessed-element-4 ignored because the association is disabled.")); expectedResult.put("assessed-element-5", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with assessed element assessed-element-5 ignored because this assessed element has several conflictual links to the remedial action.")); expectedResult.put("assessed-element-6", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with assessed element assessed-element-6 ignored because of an illegal combinationConstraintKind.")); expectedResult.put("assessed-element-7", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with assessed element assessed-element-7 ignored because no CNEC was imported by Open RAO from this assessed element.")); expectedResult.put("assessed-element-8", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with assessed element assessed-element-8 ignored because this assessed element has several conflictual links to the remedial action.")); - assertEquals(expectedResult, OnConstraintUsageRuleHelper.processCnecsLinkedToRemedialAction(crac, "remedial-action", assessedElements, assessedElementWithRemedialActions, contingencyWithRemedialActions, cnecCreationContexts)); + assertEquals(expectedResult, OnConstraintUsageRuleHelper.processCnecsLinkedToRemedialAction(crac, "remedial-action", assessedElementWithRemedialActions, contingencyWithRemedialActions, cnecCreationContexts)); } @Test @@ -192,19 +177,12 @@ void processCnecsLinkedToRemedialActionWithoutContingencies() { expectedResult.put("Line 2 - curative - CO4", new AssociationStatus(true, ElementCombinationConstraintKind.INCLUDED, "")); expectedResult.put("Line 2 - curative - CO5", new AssociationStatus(true, ElementCombinationConstraintKind.INCLUDED, "")); expectedResult.put("Line 2 - curative - CO6", new AssociationStatus(true, ElementCombinationConstraintKind.INCLUDED, "")); - expectedResult.put("Line 3 - preventive", new AssociationStatus(true, ElementCombinationConstraintKind.CONSIDERED, "")); - expectedResult.put("Line 3 - curative - CO1", new AssociationStatus(true, ElementCombinationConstraintKind.CONSIDERED, "")); - expectedResult.put("Line 3 - curative - CO2", new AssociationStatus(true, ElementCombinationConstraintKind.CONSIDERED, "")); - expectedResult.put("Line 3 - curative - CO3", new AssociationStatus(true, ElementCombinationConstraintKind.CONSIDERED, "")); - expectedResult.put("Line 3 - curative - CO4", new AssociationStatus(true, ElementCombinationConstraintKind.CONSIDERED, "")); - expectedResult.put("Line 3 - curative - CO5", new AssociationStatus(true, ElementCombinationConstraintKind.CONSIDERED, "")); - expectedResult.put("Line 3 - curative - CO6", new AssociationStatus(true, ElementCombinationConstraintKind.CONSIDERED, "")); expectedResult.put("assessed-element-4", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with assessed element assessed-element-4 ignored because the association is disabled.")); expectedResult.put("assessed-element-5", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with assessed element assessed-element-5 ignored because this assessed element has several conflictual links to the remedial action.")); expectedResult.put("assessed-element-6", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with assessed element assessed-element-6 ignored because of an illegal combinationConstraintKind.")); expectedResult.put("assessed-element-7", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with assessed element assessed-element-7 ignored because no CNEC was imported by Open RAO from this assessed element.")); expectedResult.put("assessed-element-8", new AssociationStatus(false, null, "OnConstraint usage rule for remedial action remedial-action with assessed element assessed-element-8 ignored because this assessed element has several conflictual links to the remedial action.")); - assertEquals(expectedResult, OnConstraintUsageRuleHelper.processCnecsLinkedToRemedialAction(crac, "remedial-action", assessedElements, assessedElementWithRemedialActions, Set.of(), cnecCreationContexts)); + assertEquals(expectedResult, OnConstraintUsageRuleHelper.processCnecsLinkedToRemedialAction(crac, "remedial-action", assessedElementWithRemedialActions, Set.of(), cnecCreationContexts)); } } diff --git a/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/RemedialActionCreationTest.java b/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/RemedialActionCreationTest.java index 01034b1568..cef34ec408 100644 --- a/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/RemedialActionCreationTest.java +++ b/data/crac/crac-io/crac-io-csa-profiles/src/test/java/com/powsybl/openrao/data/cracio/csaprofiles/craccreator/remedialaction/RemedialActionCreationTest.java @@ -86,124 +86,36 @@ void testUsageRulesCreation() { assertEquals(10, importedRemedialActions.size()); assertPstRangeActionImported((PstRangeAction) importedRemedialActions.get(0), "remedial-action-1", "RTE_RA1", "BBE2AA1 BBE3AA1 1", null, null, "RTE"); - assertEquals(23, importedRemedialActions.get(0).getUsageRules().size()); + assertEquals(1, importedRemedialActions.get(0).getUsageRules().size()); assertHasOnInstantUsageRule(cracCreationContext, "remedial-action-1", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - preventive - ONE", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - preventive - TWO", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - outage - ONE - TATL 60", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - outage - TWO - TATL 60", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - auto - ONE - TATL 900", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - auto - TWO - TATL 900", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 1 - ONE - TATL 900", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 1 - TWO - TATL 900", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - ONE", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - TWO", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO2 - outage - ONE - TATL 60", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO2 - outage - TWO - TATL 60", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO2 - auto - ONE - TATL 900", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO2 - auto - TWO - TATL 900", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - ONE - TATL 900", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - TWO - TATL 900", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-1", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", PREVENTIVE_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); assertPstRangeActionImported((PstRangeAction) importedRemedialActions.get(2), "remedial-action-2", "RTE_RA2", "BBE2AA1 BBE3AA1 1", null, null, "RTE"); - assertEquals(27, importedRemedialActions.get(2).getUsageRules().size()); + assertEquals(3, importedRemedialActions.get(2).getUsageRules().size()); assertHasOnInstantUsageRule(cracCreationContext, "remedial-action-2", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE); assertHasOnInstantUsageRule(cracCreationContext, "remedial-action-2", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE); assertHasOnInstantUsageRule(cracCreationContext, "remedial-action-2", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-2", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); assertPstRangeActionImported((PstRangeAction) importedRemedialActions.get(3), "remedial-action-3", "RTE_RA3", "BBE2AA1 BBE3AA1 1", null, null, "RTE"); - assertEquals(6, importedRemedialActions.get(3).getUsageRules().size()); + assertEquals(2, importedRemedialActions.get(3).getUsageRules().size()); assertHasOnContingencyStateUsageRule(cracCreationContext, "remedial-action-3", "contingency-1", AUTO_INSTANT_ID, UsageMethod.FORCED); assertHasOnContingencyStateUsageRule(cracCreationContext, "remedial-action-3", "contingency-2", AUTO_INSTANT_ID, UsageMethod.FORCED); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-3", "RTE_AE1 (assessed-element-1) - RTE_CO1 - auto - ONE - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-3", "RTE_AE1 (assessed-element-1) - RTE_CO1 - auto - TWO - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-3", "RTE_AE1 (assessed-element-1) - RTE_CO2 - auto - ONE - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-3", "RTE_AE1 (assessed-element-1) - RTE_CO2 - auto - TWO - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); assertPstRangeActionImported((PstRangeAction) importedRemedialActions.get(4), "remedial-action-4", "RTE_RA4", "BBE2AA1 BBE3AA1 1", null, null, "RTE"); - assertEquals(30, importedRemedialActions.get(4).getUsageRules().size()); + assertEquals(6, importedRemedialActions.get(4).getUsageRules().size()); assertHasOnContingencyStateUsageRule(cracCreationContext, "remedial-action-4", "contingency-1", CURATIVE_1_INSTANT_ID, UsageMethod.FORCED); assertHasOnContingencyStateUsageRule(cracCreationContext, "remedial-action-4", "contingency-1", CURATIVE_2_INSTANT_ID, UsageMethod.FORCED); assertHasOnContingencyStateUsageRule(cracCreationContext, "remedial-action-4", "contingency-1", CURATIVE_3_INSTANT_ID, UsageMethod.FORCED); assertHasOnContingencyStateUsageRule(cracCreationContext, "remedial-action-4", "contingency-2", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE); assertHasOnContingencyStateUsageRule(cracCreationContext, "remedial-action-4", "contingency-2", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE); assertHasOnContingencyStateUsageRule(cracCreationContext, "remedial-action-4", "contingency-2", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_3_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-4", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); assertPstRangeActionImported((PstRangeAction) importedRemedialActions.get(5), "remedial-action-5", "RTE_RA5", "BBE2AA1 BBE3AA1 1", null, null, "RTE"); - assertEquals(4, importedRemedialActions.get(5).getUsageRules().size()); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-5", "RTE_AE1 (assessed-element-1) - RTE_CO2 - auto - ONE - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-5", "RTE_AE1 (assessed-element-1) - RTE_CO2 - auto - TWO - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); + assertEquals(2, importedRemedialActions.get(5).getUsageRules().size()); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-5", "RTE_AE2 (assessed-element-2) - RTE_CO2 - auto - ONE - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-5", "RTE_AE2 (assessed-element-2) - RTE_CO2 - auto - TWO - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); assertPstRangeActionImported((PstRangeAction) importedRemedialActions.get(6), "remedial-action-6", "RTE_RA6", "BBE2AA1 BBE3AA1 1", null, null, "RTE"); - assertEquals(24, importedRemedialActions.get(6).getUsageRules().size()); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); + assertEquals(12, importedRemedialActions.get(6).getUsageRules().size()); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE2 (assessed-element-2) - RTE_CO2 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE2 (assessed-element-2) - RTE_CO2 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE2 (assessed-element-2) - RTE_CO2 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); @@ -218,40 +130,12 @@ void testUsageRulesCreation() { assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-6", "RTE_AE2 (assessed-element-2) - RTE_CO2 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); assertPstRangeActionImported((PstRangeAction) importedRemedialActions.get(7), "remedial-action-7", "RTE_RA7", "BBE2AA1 BBE3AA1 1", null, null, "RTE"); - assertEquals(6, importedRemedialActions.get(7).getUsageRules().size()); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-7", "RTE_AE1 (assessed-element-1) - RTE_CO1 - auto - ONE - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-7", "RTE_AE1 (assessed-element-1) - RTE_CO1 - auto - TWO - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-7", "RTE_AE1 (assessed-element-1) - RTE_CO2 - auto - ONE - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-7", "RTE_AE1 (assessed-element-1) - RTE_CO2 - auto - TWO - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); + assertEquals(2, importedRemedialActions.get(7).getUsageRules().size()); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-7", "RTE_AE2 (assessed-element-2) - RTE_CO2 - auto - ONE - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-7", "RTE_AE2 (assessed-element-2) - RTE_CO2 - auto - TWO - TATL 900", AUTO_INSTANT_ID, UsageMethod.FORCED, FlowCnec.class); assertPstRangeActionImported((PstRangeAction) importedRemedialActions.get(8), "remedial-action-8", "RTE_RA8", "BBE2AA1 BBE3AA1 1", null, null, "RTE"); - assertEquals(36, importedRemedialActions.get(8).getUsageRules().size()); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); + assertEquals(12, importedRemedialActions.get(8).getUsageRules().size()); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE2 (assessed-element-2) - RTE_CO2 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE2 (assessed-element-2) - RTE_CO2 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE2 (assessed-element-2) - RTE_CO2 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); @@ -266,31 +150,7 @@ void testUsageRulesCreation() { assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-8", "RTE_AE2 (assessed-element-2) - RTE_CO2 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); assertPstRangeActionImported((PstRangeAction) importedRemedialActions.get(9), "remedial-action-9", "RTE_RA9", "BBE2AA1 BBE3AA1 1", null, null, "RTE"); - assertEquals(24, importedRemedialActions.get(9).getUsageRules().size()); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 2 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - ONE", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO1 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - ONE - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 1 - TWO - TATL 900", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_1_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 2 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_2_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - ONE", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); - assertHasOnConstraintUsageRule(cracCreationContext, "remedial-action-9", "RTE_AE1 (assessed-element-1) - RTE_CO2 - curative 3 - TWO", CURATIVE_3_INSTANT_ID, UsageMethod.AVAILABLE, FlowCnec.class); + assertEquals(0, importedRemedialActions.get(9).getUsageRules().size()); assertPstRangeActionImported((PstRangeAction) importedRemedialActions.get(1), "remedial-action-10", "RTE_RA10", "BBE2AA1 BBE3AA1 1", null, null, "RTE"); assertTrue(importedRemedialActions.get(1).getUsageRules().isEmpty());