Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package INF102.lab5.graph;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Random;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class GraphSearchTest {
private IGraph<Integer> graph;
private IGraphSearch<Integer> graphSearch;
private final int N_NODES = 1000;
private Random random = new Random();
/**
* Adds edges of all nodes from 0 to N, i.e.:
* (0 -> 1), (1 -> 2), ..., (N-1 -> N)
*
* @param graph
*/
public void createConnectedGraph(IGraph<Integer> graph) {
for (int i = 0; i < N_NODES - 1; i++) {
graph.addEdge(i, i + 1);
}
}
@BeforeEach
public void setup() {
graph = new AdjacencySet<>();
for (int i = 0; i < N_NODES; i++) {
graph.addNode(i);
}
graphSearch = new GraphSearch<>(graph);
}
@Test
public void connectedTest() {
createConnectedGraph(graph);
int u = 0;
int v = N_NODES - 1;
assertTrue(graphSearch.connected(u, v));
}
@Test
public void notConnectedTest() {
createConnectedGraph(graph);
int u = 0;
int v = N_NODES - 1;
int w = N_NODES - 2;
graph.removeEdge(w, v);
assertFalse(graphSearch.connected(u, v));
}
@Test
public void neighbouringNodesAreConnectedTest() {
createConnectedGraph(graph);
for (int i = 0; i < 1000; i++) {
int u = random.nextInt(N_NODES);
int v = random.nextInt(N_NODES);
graph.addEdge(u, v);
assertTrue(graphSearch.connected(u, v));
}
}
@Test
public void connectedUndirectedTest() {
for (int i = 0; i < 1000; i++) {
int u = random.nextInt(N_NODES);
int v = random.nextInt(N_NODES);
graph.addEdge(u, v);
}
for (int i = 0; i < 10000; i++) {
int u = random.nextInt(N_NODES);
int v = random.nextInt(N_NODES);
boolean uConnectedToV = graphSearch.connected(u, v);
boolean vConnectedToU = graphSearch.connected(v, u);
assertEquals(uConnectedToV, vConnectedToU);
}
}
}