1 package org.codehaus.plexus.util.dag;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.util.ArrayList;
20 import java.util.List;
21
22 import org.junit.jupiter.api.Test;
23
24 import static org.junit.jupiter.api.Assertions.assertEquals;
25
26
27
28
29
30
31
32 class TopologicalSorterTest {
33
34 @Test
35 void dfs() throws Exception {
36
37
38
39 final DAG dag1 = new DAG();
40
41 dag1.addEdge("a", "b");
42
43 dag1.addEdge("b", "c");
44
45 final List<String> expected1 = new ArrayList<>();
46
47 expected1.add("c");
48
49 expected1.add("b");
50
51 expected1.add("a");
52
53 final List<String> actual1 = TopologicalSorter.sort(dag1);
54
55 assertEquals(expected1, actual1, "Order is different then expected");
56
57
58
59
60
61 final DAG dag2 = new DAG();
62
63 dag2.addVertex("a");
64
65 dag2.addVertex("b");
66
67 dag2.addVertex("c");
68
69 dag2.addEdge("b", "a");
70
71 dag2.addEdge("c", "b");
72
73 final List<String> expected2 = new ArrayList<>();
74
75 expected2.add("a");
76
77 expected2.add("b");
78
79 expected2.add("c");
80
81 final List<String> actual2 = TopologicalSorter.sort(dag2);
82
83 assertEquals(expected2, actual2, "Order is different then expected");
84
85
86
87
88
89
90
91 final DAG dag3 = new DAG();
92
93
94 dag3.addVertex("a");
95
96 dag3.addVertex("b");
97
98 dag3.addVertex("c");
99
100 dag3.addVertex("d");
101
102 dag3.addVertex("e");
103
104 dag3.addVertex("f");
105
106 dag3.addEdge("a", "b");
107
108 dag3.addEdge("b", "c");
109
110 dag3.addEdge("b", "d");
111
112 dag3.addEdge("c", "d");
113
114 dag3.addEdge("c", "e");
115
116 dag3.addEdge("f", "d");
117
118 dag3.addEdge("e", "f");
119
120 dag3.addEdge("f", "g");
121
122 final List<String> expected3 = new ArrayList<>();
123
124 expected3.add("d");
125
126 expected3.add("g");
127
128 expected3.add("f");
129
130 expected3.add("e");
131
132 expected3.add("c");
133
134 expected3.add("b");
135
136 expected3.add("a");
137
138 final List<String> actual3 = TopologicalSorter.sort(dag3);
139
140 assertEquals(expected3, actual3, "Order is different then expected");
141
142
143
144
145
146
147
148 final DAG dag4 = new DAG();
149
150
151 dag4.addVertex("f");
152
153 dag4.addVertex("e");
154
155 dag4.addVertex("d");
156
157 dag4.addVertex("c");
158
159 dag4.addVertex("a");
160
161 dag4.addVertex("b");
162
163 dag4.addEdge("a", "b");
164
165 dag4.addEdge("b", "c");
166
167 dag4.addEdge("b", "d");
168
169 dag4.addEdge("c", "d");
170
171 dag4.addEdge("c", "e");
172
173 dag4.addEdge("f", "d");
174
175 dag4.addEdge("e", "f");
176
177 final List<String> expected4 = new ArrayList<>();
178
179 expected4.add("d");
180
181 expected4.add("f");
182
183 expected4.add("e");
184
185 expected4.add("c");
186
187 expected4.add("b");
188
189 expected4.add("a");
190
191 final List<String> actual4 = TopologicalSorter.sort(dag4);
192
193 assertEquals(expected4, actual4, "Order is different then expected");
194 }
195 }