Skip to content

Commit f34158d

Browse files
author
Denis Bonnand
committed
Remove traversalType, update tests
Signed-off-by: Denis Bonnand <[email protected]>
1 parent 8562a2f commit f34158d

File tree

7 files changed

+80
-51
lines changed

7 files changed

+80
-51
lines changed

iidm/iidm-api/src/main/java/com/powsybl/iidm/network/DcTerminal.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
*/
88
package com.powsybl.iidm.network;
99

10-
import com.powsybl.math.graph.TraversalType;
1110
import com.powsybl.math.graph.TraverseResult;
1211

1312
import java.util.Set;
@@ -92,9 +91,7 @@ public interface DcTerminal {
9291
*/
9392
DcTerminal setI(double i);
9493

95-
void traverse(DcTerminal.TopologyTraverser traverser);
96-
97-
void traverse(DcTerminal.TopologyTraverser traverser, TraversalType traversalType);
94+
void traverse(TopologyTraverser traverser);
9895

9996
interface TopologyTraverser {
10097

@@ -106,11 +103,10 @@ interface TopologyTraverser {
106103
* @return {@link TraverseResult#CONTINUE} to continue traversal, {@link TraverseResult#TERMINATE_PATH}
107104
* to stop the current traversal path, {@link TraverseResult#TERMINATE_TRAVERSER} to stop all the traversal paths
108105
*/
109-
110106
TraverseResult traverse(DcTerminal terminal, boolean connected);
111107
}
112108

113-
boolean traverse(DcTerminal.TopologyTraverser traverser, Set<DcTerminal> visitedDcTerminals, TraversalType traversalType);
109+
boolean traverse(TopologyTraverser traverser, Set<DcTerminal> visitedDcTerminals);
114110

115111
/**
116112
* Disconnect the DC terminal.<br/>

iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/DcTerminalImpl.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import com.powsybl.commons.ref.Ref;
1212
import com.powsybl.commons.util.trove.TBooleanArrayList;
1313
import com.powsybl.iidm.network.*;
14-
import com.powsybl.math.graph.TraversalType;
1514
import gnu.trove.list.array.TDoubleArrayList;
1615

1716
import java.util.Objects;
@@ -193,23 +192,18 @@ String getAttributeSideOrNumberSuffix() {
193192

194193
@Override
195194
public void traverse(DcTerminal.TopologyTraverser traverser) {
196-
traverse(traverser, TraversalType.DEPTH_FIRST);
197-
}
198-
199-
@Override
200-
public void traverse(DcTerminal.TopologyTraverser traverser, TraversalType traversalType) {
201195
if (removed) {
202196
throw new PowsyblException(String.format("Associated equipment %s is removed", dcConnectable.getId()));
203197
}
204-
getTopologyModel().traverse(this, traverser, traversalType);
198+
getTopologyModel().traverse(this, traverser);
205199
}
206200

207201
@Override
208-
public boolean traverse(DcTerminal.TopologyTraverser traverser, Set<DcTerminal> visitedDcTerminals, TraversalType traversalType) {
202+
public boolean traverse(TopologyTraverser traverser, Set<DcTerminal> visitedDcTerminals) {
209203
if (removed) {
210204
throw new PowsyblException(String.format("Associated equipment %s is removed", dcConnectable.getId()));
211205
}
212-
return getTopologyModel().traverse(this, traverser, visitedDcTerminals, traversalType);
206+
return getTopologyModel().traverse(this, traverser, visitedDcTerminals);
213207
}
214208

215209
private DcTopologyModel getTopologyModel() {

iidm/iidm-impl/src/main/java/com/powsybl/iidm/network/impl/DcTopologyModel.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -383,11 +383,11 @@ protected static void addNextDcTerminals(DcTerminal otherDcTerminal, List<DcTerm
383383
}
384384
}
385385

386-
void traverse(DcTerminal terminal, DcTerminal.TopologyTraverser traverser, TraversalType traversalType) {
387-
traverse(terminal, traverser, new HashSet<>(), traversalType);
386+
void traverse(DcTerminal terminal, DcTerminal.TopologyTraverser traverser) {
387+
traverse(terminal, traverser, new HashSet<>());
388388
}
389389

390-
boolean traverse(DcTerminal terminal, DcTerminal.TopologyTraverser traverser, Set<DcTerminal> visitedDcTerminals, TraversalType traversalType) {
390+
boolean traverse(DcTerminal terminal, DcTerminal.TopologyTraverser traverser, Set<DcTerminal> visitedDcTerminals) {
391391
Objects.requireNonNull(terminal);
392392
Objects.requireNonNull(traverser);
393393
Objects.requireNonNull(visitedDcTerminals);
@@ -412,7 +412,7 @@ boolean traverse(DcTerminal terminal, DcTerminal.TopologyTraverser traverser, Se
412412
}
413413

414414
for (DcTerminal t : nextDcTerminals) {
415-
if (!t.traverse(traverser, visitedDcTerminals, traversalType)) {
415+
if (!t.traverse(traverser, visitedDcTerminals)) {
416416
return false;
417417
}
418418
}

iidm/iidm-impl/src/test/java/com/powsybl/iidm/network/impl/DcTopologyTraverseTest.java

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,16 @@
1111
import com.powsybl.iidm.network.IdentifiableType;
1212
import com.powsybl.iidm.network.Network;
1313
import com.powsybl.iidm.network.test.DcDetailedNetworkFactory;
14-
import com.powsybl.math.graph.TraversalType;
1514
import com.powsybl.math.graph.TraverseResult;
1615
import org.junit.jupiter.api.Test;
1716

1817
import static org.junit.jupiter.api.Assertions.assertEquals;
18+
import static org.junit.jupiter.api.Assertions.assertNull;
1919

2020
/**
2121
* @author Denis Bonnand {@literal <denis.bonnand at supergrid-institute.com>}
2222
*/
2323
class DcTopologyTraverseTest {
24-
25-
private final Network network = DcDetailedNetworkFactory.createVscSymmetricalMonopole();
26-
2724
private static final class ConverterTraverser implements DcTerminal.TopologyTraverser {
2825
private String firstTraversedConverterId;
2926

@@ -43,17 +40,73 @@ public String getFirstTraversedConverterId() {
4340

4441
private static String getConverterSectionId(DcTerminal terminal) {
4542
ConverterTraverser connectedConverter = new ConverterTraverser();
46-
terminal.traverse(connectedConverter, TraversalType.DEPTH_FIRST);
43+
terminal.traverse(connectedConverter);
4744
return connectedConverter.getFirstTraversedConverterId();
4845
}
4946

47+
private static final class DcLineTraverser implements DcTerminal.TopologyTraverser {
48+
private String firstTraversedDcLineId;
49+
50+
@Override
51+
public TraverseResult traverse(DcTerminal terminal, boolean connected) {
52+
if (terminal.getDcConnectable().getType() == IdentifiableType.DC_LINE) {
53+
firstTraversedDcLineId = terminal.getDcConnectable().getId();
54+
return TraverseResult.TERMINATE_TRAVERSER;
55+
}
56+
return TraverseResult.CONTINUE;
57+
}
58+
59+
public String getFirstTraversedDcLineId() {
60+
return firstTraversedDcLineId;
61+
}
62+
}
63+
64+
private static String getDcLineSectionId(DcTerminal terminal) {
65+
DcLineTraverser connectedDcLine = new DcLineTraverser();
66+
terminal.traverse(connectedDcLine);
67+
return connectedDcLine.getFirstTraversedDcLineId();
68+
}
69+
5070
@Test
51-
void test() {
71+
void testVscSymmetricalMonopole() {
72+
Network network = DcDetailedNetworkFactory.createVscSymmetricalMonopole();
73+
74+
assertEquals("VscGb", getConverterSectionId(network.getDcNode("dcNodeGbNeg").getDcTerminals().getFirst()));
75+
assertEquals("VscGb", getConverterSectionId(network.getDcNode("dcNodeGbPos").getDcTerminals().getFirst()));
76+
assertEquals("VscFr", getConverterSectionId(network.getDcNode("dcNodeFrNeg").getDcTerminals().getFirst()));
77+
assertEquals("VscFr", getConverterSectionId(network.getDcNode("dcNodeFrPos").getDcTerminals().getFirst()));
5278
assertEquals("VscFr", getConverterSectionId(network.getDcLine("dcLineNeg").getDcTerminal1()));
5379
assertEquals("VscGb", getConverterSectionId(network.getDcLine("dcLineNeg").getDcTerminal2()));
5480
assertEquals("VscFr", getConverterSectionId(network.getDcLine("dcLinePos").getDcTerminal1()));
5581
assertEquals("VscGb", getConverterSectionId(network.getDcLine("dcLinePos").getDcTerminal2()));
5682
assertEquals("VscFr", getConverterSectionId(network.getVoltageSourceConverter("VscFr").getDcTerminal1()));
5783
assertEquals("VscGb", getConverterSectionId(network.getVoltageSourceConverter("VscGb").getDcTerminal1()));
84+
85+
assertEquals("dcLineNeg", getDcLineSectionId(network.getDcNode("dcNodeGbNeg").getDcTerminals().getFirst()));
86+
assertEquals("dcLinePos", getDcLineSectionId(network.getDcNode("dcNodeGbPos").getDcTerminals().getFirst()));
87+
assertEquals("dcLineNeg", getDcLineSectionId(network.getDcNode("dcNodeFrNeg").getDcTerminals().getFirst()));
88+
assertEquals("dcLinePos", getDcLineSectionId(network.getDcNode("dcNodeFrPos").getDcTerminals().getFirst()));
89+
assertEquals("dcLineNeg", getDcLineSectionId(network.getDcLine("dcLineNeg").getDcTerminal1()));
90+
assertEquals("dcLineNeg", getDcLineSectionId(network.getDcLine("dcLineNeg").getDcTerminal2()));
91+
assertEquals("dcLinePos", getDcLineSectionId(network.getDcLine("dcLinePos").getDcTerminal1()));
92+
assertEquals("dcLinePos", getDcLineSectionId(network.getDcLine("dcLinePos").getDcTerminal2()));
93+
assertEquals("dcLineNeg", getDcLineSectionId(network.getVoltageSourceConverter("VscFr").getDcTerminal1()));
94+
assertEquals("dcLineNeg", getDcLineSectionId(network.getVoltageSourceConverter("VscGb").getDcTerminal1()));
95+
}
96+
97+
@Test
98+
void testLccBipoleGroundReturn() {
99+
Network network = DcDetailedNetworkFactory.createLccBipoleGroundReturn();
100+
101+
assertEquals("dcLine2", getDcLineSectionId(network.getDcNode("dcNodeGbNeg").getDcTerminals().getFirst()));
102+
assertEquals("dcLine1", getDcLineSectionId(network.getDcNode("dcNodeGbPos").getDcTerminals().getFirst()));
103+
assertEquals("dcLine2", getDcLineSectionId(network.getDcNode("dcNodeFrNeg").getDcTerminals().getFirst()));
104+
assertEquals("dcLine1", getDcLineSectionId(network.getDcNode("dcNodeFrPos").getDcTerminals().getFirst()));
105+
assertEquals("dcLine1", getDcLineSectionId(network.getDcLine("dcLine1").getDcTerminal1()));
106+
assertEquals("dcLine1", getDcLineSectionId(network.getDcLine("dcLine1").getDcTerminal2()));
107+
assertEquals("dcLine2", getDcLineSectionId(network.getDcLine("dcLine2").getDcTerminal1()));
108+
assertEquals("dcLine2", getDcLineSectionId(network.getDcLine("dcLine2").getDcTerminal2()));
109+
assertNull(getDcLineSectionId(network.getDcNode("dcNodeFrMid").getDcTerminals().getFirst()));
110+
assertNull(getDcLineSectionId(network.getDcNode("dcNodeGbMid").getDcTerminals().getFirst()));
58111
}
59112
}

iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tripping/DcLineTripping.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,8 @@ public void traverseDc(Network network, Set<DcTerminal> terminalsToDisconnect, S
5151
Objects.requireNonNull(network);
5252
DcLine dcLine = supplier.apply(network, id);
5353
if (dcLine == null) {
54-
throw createNotFoundException();
54+
throw new PowsyblException("DcLine '" + id + "' not found");
5555
}
5656
traverseDoubleSidedEquipment(dcNodeId, dcLine.getDcTerminal1(), dcLine.getDcTerminal2(), terminalsToDisconnect, traversedTerminals, dcLine.getType().name());
5757
}
58-
59-
protected PowsyblException createNotFoundException() {
60-
return new PowsyblException("DcLine '" + id + "' not found");
61-
}
6258
}

iidm/iidm-modification/src/main/java/com/powsybl/iidm/modification/tripping/TrippingTopologyTraverser.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,14 @@ static void traverse(DcTerminal terminal, Set<DcTerminal> terminalsToDisconnect,
6868
Objects.requireNonNull(terminal);
6969
Objects.requireNonNull(terminalsToDisconnect);
7070

71-
terminal.traverse(new DcTerminal.TopologyTraverser() {
72-
@Override
73-
public TraverseResult traverse(DcTerminal terminal, boolean connected) {
74-
if (connected) {
75-
terminalsToDisconnect.add(terminal);
76-
if (traversedDcTerminals != null) {
77-
traversedDcTerminals.add(terminal);
78-
}
71+
terminal.traverse((terminal1, connected) -> {
72+
if (connected) {
73+
terminalsToDisconnect.add(terminal1);
74+
if (traversedDcTerminals != null) {
75+
traversedDcTerminals.add(terminal1);
7976
}
80-
return TraverseResult.TERMINATE_PATH;
8177
}
78+
return TraverseResult.TERMINATE_PATH;
8279
});
8380
}
8481
}

iidm/iidm-tck/src/test/java/com/powsybl/iidm/network/tck/AbstractDcLineTest.java

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -178,18 +178,11 @@ public void testRemove() {
178178
PowsyblException e4 = assertThrows(PowsyblException.class, () -> t2.setConnected(false));
179179
assertEquals("Cannot modify removed equipment dcLine1", e4.getMessage());
180180

181-
try {
182-
t1.traverse(Mockito.mock(DcTerminal.TopologyTraverser.class));
183-
fail();
184-
} catch (PowsyblException e) {
185-
assertEquals("Associated equipment dcLine1 is removed", e.getMessage());
186-
}
187-
try {
188-
t2.traverse(Mockito.mock(DcTerminal.TopologyTraverser.class));
189-
fail();
190-
} catch (PowsyblException e) {
191-
assertEquals("Associated equipment dcLine1 is removed", e.getMessage());
192-
}
181+
PowsyblException e5 = assertThrows(PowsyblException.class, () -> t1.traverse(Mockito.mock(DcTerminal.TopologyTraverser.class)));
182+
assertEquals("Associated equipment dcLine1 is removed", e5.getMessage());
183+
184+
PowsyblException e6 = assertThrows(PowsyblException.class, () -> t2.traverse(Mockito.mock(DcTerminal.TopologyTraverser.class)));
185+
assertEquals("Associated equipment dcLine1 is removed", e6.getMessage());
193186
}
194187

195188
@Test

0 commit comments

Comments
 (0)