1
1
#include < gtest/gtest.h>
2
2
3
- TEST (Test, Simple) {
4
- ASSERT_EQ (1 , 1 ); // Stack []
5
- }
3
+ #include < stdexcept>
4
+
5
+ #include " topological_sort.cpp"
6
+
7
+ template <typename T>
8
+ bool check_graph_sorted (Graph<T, int >& g) {
9
+ for (auto i : g.nodes ) {
10
+ for (auto k : i->paths ) {
11
+ if (i->name >= k.first ->name ) {
12
+ return false ;
13
+ }
14
+ }
15
+ }
16
+ return true ;
17
+ }
18
+
19
+ TEST (TopologySort, TestSimple1) {
20
+ Graph<int , int > g ({{1 , 4 }, {4 , 2 }, {3 , 2 }, {4 , 3 }});
21
+ ASSERT_EQ (check_graph_sorted (topological_sort (g)), true ); // Stack []
22
+ }
23
+
24
+ TEST (TopologySort, TestSimple2) {
25
+ Graph<int , int > g ({{1 , 2 }, {3 , 2 }, {2 , 5 }, {4 , 2 }, {4 , 6 }, {6 , 5 }});
26
+ ASSERT_EQ (check_graph_sorted (topological_sort (g)), true ); // Stack []
27
+ }
28
+
29
+ TEST (TopologySort, TestExtraSourcePoint1) {
30
+ Graph<int , int > g ({{1 , 2 }, {3 , 2 }, {2 , 5 }, {4 , 2 }, {4 , 6 }, {6 , 5 }, {8 , 6 }});
31
+ ASSERT_EQ (check_graph_sorted (topological_sort (g)), true ); // Stack []
32
+ }
33
+
34
+ TEST (TopologySort, TestExtraSourcePoint2) {
35
+ Graph<int , int > g ({{1 , 2 }, {3 , 2 }, {8 , 5 }, {2 , 5 }, {4 , 2 }, {4 , 6 }, {6 , 5 }});
36
+ ASSERT_EQ (check_graph_sorted (topological_sort (g)), true ); // Stack []
37
+ }
38
+
39
+ TEST (TopologySort, TestExtraSourcePoint3) {
40
+ Graph<int , int > g ({{1 , 4 }, {4 , 2 }, {3 , 2 }, {4 , 3 }, {9 , 1 }});
41
+ ASSERT_EQ (check_graph_sorted (topological_sort (g)), true ); // Stack []
42
+ }
43
+
44
+ TEST (TopologySort, TestExtraSourcePoint4) {
45
+ Graph<int , int > g ({{1 , 2 }, {3 , 2 }, {6 , 5 }, {2 , 5 }, {4 , 2 }, {4 , 6 }, {6 , 5 }});
46
+ ASSERT_EQ (check_graph_sorted (topological_sort (g)), true ); // Stack []
47
+ }
48
+
49
+ TEST (TopologySort, TestExtraLeafPoint) {
50
+ Graph<int , int > g ({{1 , 2 }, {3 , 2 }, {6 , 9 }, {2 , 5 }, {4 , 2 }, {4 , 6 }, {6 , 5 }});
51
+ ASSERT_EQ (check_graph_sorted (topological_sort (g)), true ); // Stack []
52
+ }
53
+
54
+ TEST (TopologySort, TestLoopError1) {
55
+ Graph<int , int > g ({{1 , 4 }, {4 , 2 }, {3 , 2 }, {4 , 3 }, {3 , 3 }});
56
+ EXPECT_THROW (topological_sort (g), std::runtime_error); // Stack []
57
+ }
58
+
59
+ TEST (TopologySort, TestLoopError2) {
60
+ Graph<int , int > g ({{1 , 2 }, {1 , 3 }, {3 , 2 }, {2 , 3 }});
61
+ EXPECT_THROW (topological_sort (g), std::runtime_error); // Stack []
62
+ }
63
+
64
+ TEST (TopologySort, TestLoopError3) {
65
+ Graph<int , int > g ({{1 , 4 }, {4 , 2 }, {3 , 2 }, {4 , 3 }, {4 , 1 }});
66
+ EXPECT_THROW (topological_sort (g),
67
+ std::runtime_error); // Stack []
68
+ }
69
+
70
+ TEST (TopologySort, TestLoopError4) {
71
+ Graph<int , int > g ({{1 , 2 }, {1 , 3 }, {3 , 2 }, {2 , 3 }, {2 , 1 }, {3 , 1 }});
72
+ EXPECT_THROW (topological_sort (g), std::runtime_error); // Stack []
73
+ }
0 commit comments