1111import com .powsybl .iidm .network .IdentifiableType ;
1212import com .powsybl .iidm .network .Network ;
1313import com .powsybl .iidm .network .test .DcDetailedNetworkFactory ;
14- import com .powsybl .math .graph .TraversalType ;
1514import com .powsybl .math .graph .TraverseResult ;
1615import org .junit .jupiter .api .Test ;
1716
1817import 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 */
2323class 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}
0 commit comments