Skip to content

Commit fcdaf21

Browse files
committed
Refactor exception assertions
1 parent da6edeb commit fcdaf21

23 files changed

Lines changed: 203 additions & 301 deletions
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package algolib;
2+
3+
import org.assertj.core.api.Assertions;
4+
5+
public final class TestUtils
6+
{
7+
public static <T> T failOnException(ExceptionalSupplier<T> supplier)
8+
{
9+
try
10+
{
11+
return supplier.get();
12+
}
13+
catch(Exception e)
14+
{
15+
Assertions.fail("Unexpected exception %s".formatted(e.getClass().getSimpleName()));
16+
return null;
17+
}
18+
}
19+
20+
public static void failOnException(ExceptionalRunnable supplier)
21+
{
22+
try
23+
{
24+
supplier.run();
25+
}
26+
catch(Exception e)
27+
{
28+
Assertions.fail("Unexpected exception %s".formatted(e.getClass().getSimpleName()));
29+
}
30+
}
31+
32+
@FunctionalInterface
33+
public interface ExceptionalSupplier<T>
34+
{
35+
T get()
36+
throws Exception;
37+
}
38+
39+
@FunctionalInterface
40+
public interface ExceptionalRunnable
41+
{
42+
void run()
43+
throws Exception;
44+
}
45+
}

src/test/java/algolib/geometry/dim2/ClosestPointsTest.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@ public class ClosestPointsTest
1313
@Test
1414
public void findClosestPoints_WhenNoPoints_ThenNoSuchElementException()
1515
{
16-
// when
17-
Throwable throwable =
18-
Assertions.catchThrowable(() -> ClosestPoints.findClosestPoints(List.of()));
19-
// then
20-
Assertions.assertThat(throwable).isInstanceOf(NoSuchElementException.class);
16+
17+
Assertions.assertThatThrownBy(() -> ClosestPoints.findClosestPoints(List.of()))
18+
.isInstanceOf(NoSuchElementException.class);
2119
}
2220

2321
@Test

src/test/java/algolib/geometry/dim2/Vector2DTest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,7 @@ public void divide_ThenDivideEachCoordinate()
131131
@Test
132132
public void divide_WhenDivisionByZero_ThenArithmeticException()
133133
{
134-
// when
135-
Throwable throwable = Assertions.catchThrowable(() -> Vector2D.of(1.0, 1.0).divide(0));
136-
// then
137-
Assertions.assertThat(throwable).isInstanceOf(ArithmeticException.class);
134+
Assertions.assertThatThrownBy(() -> Vector2D.of(1.0, 1.0).divide(0))
135+
.isInstanceOf(ArithmeticException.class);
138136
}
139137
}

src/test/java/algolib/geometry/dim3/Vector3DTest.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,7 @@ public void divide_ThenDivideEachCoordinate()
180180
@Test
181181
public void divide_WhenDivisionByZero_ThenArithmeticException()
182182
{
183-
// when
184-
Throwable throwable = Assertions.catchThrowable(() -> Vector3D.of(1.0, 1.0, 1.0).divide(0));
185-
186-
// then
187-
Assertions.assertThat(throwable).isInstanceOf(ArithmeticException.class);
183+
Assertions.assertThatThrownBy(() -> Vector3D.of(1.0, 1.0, 1.0).divide(0))
184+
.isInstanceOf(ArithmeticException.class);
188185
}
189186
}

src/test/java/algolib/graphs/DirectedSimpleGraphTest.java

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,13 @@ public void getProperties_get_WhenNotExisting_ThenIllegalArgumentException()
6060
Vertex<Integer> vertex = new Vertex<>(14);
6161
Edge<Integer> edge1 = new Edge<>(new Vertex<>(2), new Vertex<>(8));
6262
Edge<Integer> edge2 = new Edge<>(new Vertex<>(0), new Vertex<>(-1));
63-
// when
64-
Throwable throwableVertex =
65-
Assertions.catchThrowable(() -> testObject.getProperties().get(vertex));
66-
Throwable throwableEdge1 =
67-
Assertions.catchThrowable(() -> testObject.getProperties().get(edge1));
68-
Throwable throwableEdge2 =
69-
Assertions.catchThrowable(() -> testObject.getProperties().get(edge2));
7063
// then
71-
Assertions.assertThat(throwableVertex).isInstanceOf(IllegalArgumentException.class);
72-
Assertions.assertThat(throwableEdge1).isInstanceOf(IllegalArgumentException.class);
73-
Assertions.assertThat(throwableEdge2).isInstanceOf(IllegalArgumentException.class);
64+
Assertions.assertThatThrownBy(() -> testObject.getProperties().get(vertex))
65+
.isInstanceOf(IllegalArgumentException.class);
66+
Assertions.assertThatThrownBy(() -> testObject.getProperties().get(edge1))
67+
.isInstanceOf(IllegalArgumentException.class);
68+
Assertions.assertThatThrownBy(() -> testObject.getProperties().get(edge2))
69+
.isInstanceOf(IllegalArgumentException.class);
7470
}
7571

7672
@Test
@@ -295,11 +291,9 @@ public void addVertex_WhenExistingVertex_ThenNull()
295291
String property = "qwerty";
296292

297293
testObject.getProperties().set(vertex, property);
298-
// when
299-
Throwable throwable =
300-
Assertions.catchThrowable(() -> testObject.addVertex(vertex, "abcdefg"));
301294
// then
302-
Assertions.assertThat(throwable).isInstanceOf(IllegalArgumentException.class);
295+
Assertions.assertThatThrownBy(() -> testObject.addVertex(vertex, "abcdefg"))
296+
.isInstanceOf(IllegalArgumentException.class);
303297
Assertions.assertThat(testObject.getVerticesCount()).isEqualTo(10);
304298
Assertions.assertThat(testObject.getProperties().get(vertex)).isEqualTo(property);
305299
}
@@ -330,11 +324,9 @@ public void addEdgeBetween_WhenExistingEdge_ThenIllegalArgumentException()
330324
Vertex<Integer> source = new Vertex<>(3);
331325
Vertex<Integer> destination = new Vertex<>(7);
332326
testObject.addEdgeBetween(source, destination);
333-
// when
334-
Throwable throwable =
335-
Assertions.catchThrowable(() -> testObject.addEdgeBetween(source, destination));
336327
// then
337-
Assertions.assertThat(throwable).isInstanceOf(IllegalArgumentException.class);
328+
Assertions.assertThatThrownBy(() -> testObject.addEdgeBetween(source, destination))
329+
.isInstanceOf(IllegalArgumentException.class);
338330
}
339331

340332
@Test

src/test/java/algolib/graphs/MultipartiteGraphTest.java

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -164,10 +164,8 @@ public void getVerticesFromGroup_WhenValidGroup_ThenVertices()
164164
@Test
165165
public void getVerticesFromGroup_WhenInvalidGroup_ThenIndexOutOfBoundsException()
166166
{
167-
// when
168-
Throwable throwable = Assertions.catchThrowable(() -> testObject.getVerticesFromGroup(14));
169-
// then
170-
Assertions.assertThat(throwable).isInstanceOf(IndexOutOfBoundsException.class);
167+
Assertions.assertThatThrownBy(() -> testObject.getVerticesFromGroup(14))
168+
.isInstanceOf(IndexOutOfBoundsException.class);
171169
}
172170

173171
@Test
@@ -193,22 +191,18 @@ public void addVertex_WhenExistingVertex_ThenIllegalArgumentException()
193191
String property = "qwerty";
194192

195193
testObject.getProperties().set(vertex, property);
196-
// when
197-
Throwable throwable =
198-
Assertions.catchThrowable(() -> testObject.addVertex(3, vertex, "xyz"));
199-
// then
200-
Assertions.assertThat(throwable).isInstanceOf(IllegalArgumentException.class);
194+
195+
Assertions.assertThatThrownBy(() -> testObject.addVertex(3, vertex, "xyz"))
196+
.isInstanceOf(IllegalArgumentException.class);
201197
Assertions.assertThat(testObject.getVerticesCount()).isEqualTo(10);
202198
Assertions.assertThat(testObject.getProperties().get(vertex)).isEqualTo(property);
203199
}
204200

205201
@Test
206202
public void addVertex_WhenInvalidGroup_ThenIndexOutOfBoundsException()
207203
{
208-
// when
209-
Throwable throwable = Assertions.catchThrowable(() -> testObject.addVertex(-3, 19));
210-
// then
211-
Assertions.assertThat(throwable).isInstanceOf(IndexOutOfBoundsException.class);
204+
Assertions.assertThatThrownBy(() -> testObject.addVertex(-3, 19))
205+
.isInstanceOf(IndexOutOfBoundsException.class);
212206
}
213207

214208
@Test
@@ -235,30 +229,24 @@ public void addEdgeBetween_WhenExistingEdge_ThenIllegalArgumentException()
235229
Vertex<Integer> destination = new Vertex<>(3);
236230

237231
testObject.addEdgeBetween(source, destination);
238-
// when
239-
Throwable throwable =
240-
Assertions.catchThrowable(() -> testObject.addEdgeBetween(source, destination));
241-
// then
242-
Assertions.assertThat(throwable).isInstanceOf(IllegalArgumentException.class);
232+
233+
Assertions.assertThatThrownBy(() -> testObject.addEdgeBetween(source, destination))
234+
.isInstanceOf(IllegalArgumentException.class);
243235
}
244236

245237
@Test
246238
public void addEdgeBetween_WhenSameGroup_ThenGraphPartitionException()
247239
{
248-
// when
249-
Throwable throwable = Assertions.catchThrowable(
250-
() -> testObject.addEdgeBetween(new Vertex<>(5), new Vertex<>(8)));
251-
// then
252-
Assertions.assertThat(throwable).isInstanceOf(GraphPartitionException.class);
240+
Assertions.assertThatThrownBy(
241+
() -> testObject.addEdgeBetween(new Vertex<>(5), new Vertex<>(8)))
242+
.isInstanceOf(GraphPartitionException.class);
253243
}
254244

255245
@Test
256246
public void addEdgeBetween_WhenInvalidVertex_ThenIllegalArgumentException()
257247
{
258-
// when
259-
Throwable throwable = Assertions.catchThrowable(
260-
() -> testObject.addEdgeBetween(new Vertex<>(15), new Vertex<>(18)));
261-
// then
262-
Assertions.assertThat(throwable).isInstanceOf(IllegalArgumentException.class);
248+
Assertions.assertThatThrownBy(
249+
() -> testObject.addEdgeBetween(new Vertex<>(15), new Vertex<>(18)))
250+
.isInstanceOf(IllegalArgumentException.class);
263251
}
264252
}

src/test/java/algolib/graphs/TreeGraphTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -183,11 +183,10 @@ public void addVertex_WhenExistingVertex_ThenIllegalArgumentException()
183183
String property = "qwerty";
184184

185185
testObject.getProperties().set(vertex, property);
186-
// when
187-
Throwable throwable = Assertions.catchThrowable(
188-
() -> testObject.addVertex(vertex, new Vertex<>(2), "abcdefg", "xyz"));
189186
// then
190-
Assertions.assertThat(throwable).isInstanceOf(IllegalArgumentException.class);
187+
Assertions.assertThatThrownBy(
188+
() -> testObject.addVertex(vertex, new Vertex<>(2), "abcdefg", "xyz"))
189+
.isInstanceOf(IllegalArgumentException.class);
191190
Assertions.assertThat(testObject.getVerticesCount()).isEqualTo(8);
192191
Assertions.assertThat(testObject.getProperties().get(vertex)).isEqualTo(property);
193192
}

src/test/java/algolib/graphs/UndirectedSimpleGraphTest.java

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,13 @@ public void getProperties_get_WhenNotExisting_ThenIllegalArgumentException()
5959
Vertex<Integer> vertex = new Vertex<>(14);
6060
Edge<Integer> edge1 = new Edge<>(new Vertex<>(2), new Vertex<>(8));
6161
Edge<Integer> edge2 = new Edge<>(new Vertex<>(0), new Vertex<>(-1));
62-
// when
63-
Throwable throwableVertex =
64-
Assertions.catchThrowable(() -> testObject.getProperties().get(vertex));
65-
Throwable throwableEdge1 =
66-
Assertions.catchThrowable(() -> testObject.getProperties().get(edge1));
67-
Throwable throwableEdge2 =
68-
Assertions.catchThrowable(() -> testObject.getProperties().get(edge2));
6962
// then
70-
Assertions.assertThat(throwableVertex).isInstanceOf(IllegalArgumentException.class);
71-
Assertions.assertThat(throwableEdge1).isInstanceOf(IllegalArgumentException.class);
72-
Assertions.assertThat(throwableEdge2).isInstanceOf(IllegalArgumentException.class);
63+
Assertions.assertThatThrownBy(() -> testObject.getProperties().get(vertex))
64+
.isInstanceOf(IllegalArgumentException.class);
65+
Assertions.assertThatThrownBy(() -> testObject.getProperties().get(edge1))
66+
.isInstanceOf(IllegalArgumentException.class);
67+
Assertions.assertThatThrownBy(() -> testObject.getProperties().get(edge2))
68+
.isInstanceOf(IllegalArgumentException.class);
7369
}
7470

7571
@Test
@@ -294,11 +290,9 @@ public void addVertex_WhenExistingVertex_ThenNull()
294290
String property = "qwerty";
295291

296292
testObject.getProperties().set(vertex, property);
297-
// when
298-
Throwable throwable =
299-
Assertions.catchThrowable(() -> testObject.addVertex(vertex, "abcdefg"));
300293
// then
301-
Assertions.assertThat(throwable).isInstanceOf(IllegalArgumentException.class);
294+
Assertions.assertThatThrownBy(() -> testObject.addVertex(vertex, "abcdefg"))
295+
.isInstanceOf(IllegalArgumentException.class);
302296
Assertions.assertThat(testObject.getVerticesCount()).isEqualTo(10);
303297
Assertions.assertThat(testObject.getProperties().get(vertex)).isEqualTo(property);
304298
}
@@ -330,11 +324,9 @@ public void addEdgeBetween_WhenExistingEdge_ThenIllegalArgumentException()
330324
Vertex<Integer> destination = new Vertex<>(7);
331325

332326
testObject.addEdgeBetween(source, destination);
333-
// when
334-
Throwable throwable =
335-
Assertions.catchThrowable(() -> testObject.addEdgeBetween(source, destination));
336327
// then
337-
Assertions.assertThat(throwable).isInstanceOf(IllegalArgumentException.class);
328+
Assertions.assertThatThrownBy(() -> testObject.addEdgeBetween(source, destination))
329+
.isInstanceOf(IllegalArgumentException.class);
338330
}
339331

340332
@Test
@@ -345,11 +337,9 @@ public void addEdgeBetween_WhenReversedEdge_ThenIllegalArgumentException()
345337
Vertex<Integer> destination = new Vertex<>(7);
346338

347339
testObject.addEdgeBetween(source, destination);
348-
// when
349-
Throwable throwable =
350-
Assertions.catchThrowable(() -> testObject.addEdgeBetween(destination, source));
351340
// then
352-
Assertions.assertThat(throwable).isInstanceOf(IllegalArgumentException.class);
341+
Assertions.assertThatThrownBy(() -> testObject.addEdgeBetween(destination, source))
342+
.isInstanceOf(IllegalArgumentException.class);
353343
}
354344

355345
@Test

src/test/java/algolib/graphs/algorithms/ShortestPathsTest.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,11 @@ public void bellmanFord_WhenNegativeCycle_ThenIllegalStateException()
140140
// given
141141
directedGraph.addEdgeBetween(directedGraph.getVertex(8), directedGraph.getVertex(3),
142142
new Weight(-20.0));
143-
// when
144-
Throwable throwable = Assertions.catchThrowable(
145-
() -> ShortestPaths.bellmanFord(directedGraph, directedGraph.getVertex(1)));
146143
// then
147-
Assertions.assertThat(throwable).isInstanceOf(IllegalStateException.class);
144+
Assertions.assertThatThrownBy(
145+
() -> ShortestPaths.bellmanFord(directedGraph,
146+
directedGraph.getVertex(1)))
147+
.isInstanceOf(IllegalStateException.class);
148148
}
149149

150150
// endregion
@@ -182,11 +182,10 @@ public void dijkstra_WhenNegativeEdge_ThenIllegalStateException()
182182
// given
183183
directedGraph.addEdgeBetween(directedGraph.getVertex(8), directedGraph.getVertex(3),
184184
new Weight(-5.0));
185-
// when
186-
Throwable throwable = Assertions.catchThrowable(
187-
() -> ShortestPaths.dijkstra(directedGraph, directedGraph.getVertex(1)));
188185
// then
189-
Assertions.assertThat(throwable).isInstanceOf(IllegalStateException.class);
186+
Assertions.assertThatThrownBy(
187+
() -> ShortestPaths.dijkstra(directedGraph, directedGraph.getVertex(1)))
188+
.isInstanceOf(IllegalStateException.class);
190189
}
191190

192191
// endregion

src/test/java/algolib/graphs/algorithms/TopologicalSortingTest.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,9 @@ public void inputsTopologicalSort_WhenCyclicGraph_ThenDirectedCyclicGraphExcepti
5858
graph.addEdgeBetween(graph.getVertex(5), graph.getVertex(1));
5959
graph.addEdgeBetween(graph.getVertex(5), graph.getVertex(2));
6060
graph.addEdgeBetween(graph.getVertex(5), graph.getVertex(4));
61-
// when
62-
Throwable throwable =
63-
Assertions.catchThrowable(() -> TopologicalSorting.inputsTopologicalSort(graph));
6461
// then
65-
Assertions.assertThat(throwable).isInstanceOf(DirectedCyclicGraphException.class);
62+
Assertions.assertThatThrownBy(() -> TopologicalSorting.inputsTopologicalSort(graph))
63+
.isInstanceOf(DirectedCyclicGraphException.class);
6664
}
6765

6866
@Test
@@ -129,11 +127,9 @@ public void dfsTopologicalSort_WhenCyclicGraph_ThenDirectedCyclicGraphException(
129127
graph.addEdgeBetween(graph.getVertex(5), graph.getVertex(1));
130128
graph.addEdgeBetween(graph.getVertex(5), graph.getVertex(2));
131129
graph.addEdgeBetween(graph.getVertex(5), graph.getVertex(4));
132-
// when
133-
Throwable throwable =
134-
Assertions.catchThrowable(() -> TopologicalSorting.dfsTopologicalSort(graph));
135130
// then
136-
Assertions.assertThat(throwable).isInstanceOf(DirectedCyclicGraphException.class);
131+
Assertions.assertThatThrownBy(() -> TopologicalSorting.dfsTopologicalSort(graph))
132+
.isInstanceOf(DirectedCyclicGraphException.class);
137133
}
138134

139135
@Test

0 commit comments

Comments
 (0)