1616package com .b2international .snowowl .core .taxonomy ;
1717
1818import static org .assertj .core .api .Assertions .assertThat ;
19- import static org .junit .Assert .*;
19+ import static org .junit .Assert .assertFalse ;
20+ import static org .junit .Assert .assertThrows ;
21+ import static org .junit .Assert .assertTrue ;
2022
2123import java .util .Set ;
2224
@@ -31,17 +33,21 @@ public class SimpleTaxonomyGraphTest {
3133
3234 private SimpleTaxonomyGraph graph = new SimpleTaxonomyGraph (10 , 10 );
3335
36+ private boolean graphHasErrors () {
37+ return !graph .build ().isEmpty ();
38+ }
39+
3440 @ Test
3541 public void isBuilt () {
3642 assertFalse ("Graph should start out in the not-built state." , graph .isBuilt ());
3743 }
3844
3945 @ Test
4046 public void buildSetsFlag () {
41- assertFalse ("Graph build should report no errors." , graph . build ());
47+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
4248 assertTrue ("Graph should be built." , graph .isBuilt ());
4349 }
44-
50+
4551 @ Test
4652 public void getDescendantIdsWithoutBuild () {
4753 assertThrows (IllegalStateException .class , () -> graph .getDescendantIds ("A" ));
@@ -69,7 +75,7 @@ public void updateEdge() {
6975 */
7076 graph .addEdge ("A" , "B" );
7177 graph .addEdge ("A" , "C" );
72- assertFalse ("Graph build should report no errors." , graph . build ());
78+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
7379
7480 assertThat (graph .getParentIds ("A" )).containsOnly ("C" );
7581 }
@@ -91,26 +97,26 @@ public void getIndirectAncestorIdsNull() {
9197
9298 @ Test
9399 public void getDescendantIdsUnknownId () {
94- assertFalse ("Graph build should report no errors." , graph . build ());
100+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
95101 assertThrows (NotFoundException .class , () -> graph .getDescendantIds ("A" ));
96102 }
97103
98104 @ Test
99105 public void getParentIdsUnknownId () {
100- assertFalse ("Graph build should report no errors." , graph . build ());
106+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
101107 assertThrows (NotFoundException .class , () -> graph .getParentIds ("A" ));
102108 }
103109
104110 @ Test
105111 public void getIndirectAncestorIdsUnknownId () {
106- assertFalse ("Graph build should report no errors." , graph . build ());
112+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
107113 assertThrows (NotFoundException .class , () -> graph .getIndirectAncestorIds ("A" ));
108114 }
109115
110116 @ Test
111117 public void singleNode () {
112118 graph .addNode ("A" );
113- assertFalse ("Graph build should report no errors." , graph . build ());
119+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
114120
115121 assertThat (graph .getDescendantIds ("A" )).isEmpty ();
116122 assertThat (graph .getParentIds ("A" )).isEmpty ();
@@ -121,7 +127,7 @@ public void singleNode() {
121127 public void twoIsolatedNodes () {
122128 graph .addNode ("A" );
123129 graph .addNode ("B" );
124- assertFalse ("Graph build should report no errors." , graph . build ());
130+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
125131
126132 assertThat (graph .getDescendantIds ("A" )).isEmpty ();
127133 assertThat (graph .getParentIds ("A" )).isEmpty ();
@@ -136,7 +142,7 @@ public void parentChild() {
136142 graph .addNode ("A" );
137143 graph .addNode ("B" );
138144 graph .addEdge ("A" , "B" );
139- assertFalse ("Graph build should report no errors." , graph . build ());
145+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
140146
141147 assertThat (graph .getDescendantIds ("A" )).isEmpty ();
142148 assertThat (graph .getParentIds ("A" )).containsOnly ("B" );
@@ -153,7 +159,7 @@ public void ancestor() {
153159 graph .addNode ("C" );
154160 graph .addEdge ("A" , "B" );
155161 graph .addEdge ("B" , "C" );
156- assertFalse ("Graph build should report no errors." , graph . build ());
162+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
157163
158164 assertThat (graph .getDescendantIds ("A" )).isEmpty ();
159165 assertThat (graph .getParentIds ("A" )).containsOnly ("B" );
@@ -181,7 +187,7 @@ public void multipleAncestors() {
181187 graph .addEdge ("A2" , "B" );
182188 graph .addEdge ("A3" , "B" );
183189 graph .addEdge ("B" , Set .of ("C1" , "C2" ));
184- assertFalse ("Graph build should report no errors." , graph . build ());
190+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
185191
186192 assertThat (graph .getDescendantIds ("A1" )).isEmpty ();
187193 assertThat (graph .getParentIds ("A1" )).containsOnly ("B" );
@@ -223,7 +229,7 @@ public void deepTreeWithShortcut() {
223229 graph .addEdge ("A3" , "B" );
224230 graph .addEdge ("B" , "C" );
225231 graph .addEdge ("C" , Set .of ("D1" , "D2" ));
226- assertFalse ("Graph build should report no errors." , graph . build ());
232+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
227233
228234 assertThat (graph .getDescendantIds ("A1" )).isEmpty ();
229235 assertThat (graph .getParentIds ("A1" )).containsOnly ("B" , "D1" );
@@ -268,7 +274,7 @@ public void descendantProcessing() {
268274 graph .addEdge ("C1" , "D" );
269275 graph .addEdge ("C2" , "D" );
270276 graph .addEdge ("D" , "E" );
271- assertFalse ("Graph build should report no errors." , graph . build ());
277+ assertFalse ("Graph build should report no errors." , graphHasErrors ());
272278
273279 assertThat (graph .getDescendantIds ("D" )).containsOnly ("A" , "B" , "C1" , "C2" );
274280 assertThat (graph .getDescendantIds ("E" )).containsOnly ("A" , "B" , "C1" , "C2" , "D" );
@@ -278,15 +284,15 @@ public void descendantProcessing() {
278284 public void buildUnknownSourceId () {
279285 graph .addNode ("B" );
280286 graph .addEdge ("A" , "B" );
281- assertTrue ("Graph build should report an error." , graph . build ());
287+ assertTrue ("Graph build should report an error." , graphHasErrors ());
282288 }
283289
284290 @ Test
285291 public void buildUnknownDestinationId () {
286292 graph .addNode ("A" );
287293 graph .addNode ("B" );
288294 graph .addEdge ("A" , Set .of ("B" , "C" , "D" ));
289- assertTrue ("Graph build should report an error." , graph . build ());
295+ assertTrue ("Graph build should report an error." , graphHasErrors ());
290296 }
291297
292298 @ Test
@@ -296,7 +302,17 @@ public void buildSelfCycle() {
296302 graph .addNode ("C" );
297303 graph .addEdge ("A" , Set .of ("A" , "B" ));
298304 graph .addEdge ("B" , "C" );
299- assertTrue ("Graph build should report an error." , graph .build ());
305+ assertTrue ("Graph build should report an error." , graphHasErrors ());
306+ }
307+
308+ @ Test
309+ public void buildShortCycle () {
310+ graph .addNode ("A" );
311+ graph .addNode ("B" );
312+ graph .addNode ("C" );
313+ graph .addEdge ("A" , "B" );
314+ graph .addEdge ("B" , "A" );
315+ assertTrue ("Graph build should report an error." , graphHasErrors ());
300316 }
301317
302318 @ Test
@@ -310,7 +326,7 @@ public void buildLongCycle() {
310326 graph .addEdge ("B" , "C" );
311327 graph .addEdge ("C" , "D" );
312328 graph .addEdge ("D" , Set .of ("E" , "B" ));
313- assertTrue ("Graph build should report an error." , graph . build ());
329+ assertTrue ("Graph build should report an error." , graphHasErrors ());
314330 }
315331
316332 @ Test
@@ -322,6 +338,6 @@ public void removeEdgeDoesNotRemoveInboundEdgesAutomatically() throws Exception
322338 graph .addEdge ("B" , "C" );
323339 graph .removeNode ("B" );
324340 graph .removeEdge ("B" );
325- assertTrue ("Graph build should not report an error." , graph . build ());
341+ assertTrue ("Graph build should not report an error." , graphHasErrors ());
326342 }
327343}
0 commit comments