1- // @dart=2.9
21import 'package:test/test.dart' ;
32
43import 'package:algorithms/graph/simple_graph.dart' ;
54import 'package:algorithms/graph/vertex.dart' ;
65
76void main () {
8- SimpleGraph emptyGraph, simpleGraph;
9- Vertex a, b, c, d, e, f, u, v;
7+ SimpleGraph ? emptyGraph, simpleGraph;
8+ Vertex ? a, b, c, d, e, f, u, v;
109
1110 void _initializeVertices () {
1211 a = Vertex ('a' );
@@ -31,134 +30,134 @@ void main() {
3130 */
3231 simpleGraph = SimpleGraph ();
3332
34- simpleGraph.addEdge (a, b);
35- simpleGraph.addEdge (a, f);
36- simpleGraph.addEdge (b, c, 4 );
37- simpleGraph.addEdge (d, a, 2 );
38- simpleGraph.addEdge (f, e, 7 );
39- simpleGraph.addEdge (c, d);
33+ simpleGraph? .addEdge (a! , b! );
34+ simpleGraph? .addEdge (a! , f! );
35+ simpleGraph? .addEdge (b! , c! , 4 );
36+ simpleGraph? .addEdge (d! , a! , 2 );
37+ simpleGraph? .addEdge (f! , e! , 7 );
38+ simpleGraph? .addEdge (c! , d! );
4039 });
4140
4241 test ('Total number of vertices' , () {
43- expect (emptyGraph.numberOfVertices, equals (0 ));
44- expect (simpleGraph.numberOfVertices, equals (6 ));
42+ expect (emptyGraph? .numberOfVertices, equals (0 ));
43+ expect (simpleGraph? .numberOfVertices, equals (6 ));
4544 });
4645
4746 test ('Total number of edges' , () {
48- expect (emptyGraph.numberOfEdges, equals (0 ));
49- expect (simpleGraph.numberOfEdges, equals (6 ));
47+ expect (emptyGraph? .numberOfEdges, equals (0 ));
48+ expect (simpleGraph? .numberOfEdges, equals (6 ));
5049 });
5150
5251 test ('Loops are not allowed for a simple graph' , () {
5352 var graph = SimpleGraph ();
54- expect (() => graph.addEdge (a, a), throwsA (isA <Error >()));
53+ expect (() => graph.addEdge (a! , a! ), throwsA (isA <Error >()));
5554 });
5655
5756 test ('Digraphs add connections in one way' , () {
5857 var graph = SimpleGraph (isDigraph: true );
59- graph.addEdge (u, v);
58+ graph.addEdge (u! , v! );
6059 expect (graph.numberOfEdges, equals (1 ));
6160 });
6261
6362 test ('Non-digraphs add connections in both ways' , () {
6463 var graph = SimpleGraph (isDigraph: false );
65- graph.addEdge (u, v);
64+ graph.addEdge (u! , v! );
6665 expect (graph.numberOfEdges, equals (2 ));
6766 });
6867
6968 test ('Checks for vertex' , () {
7069 var graph = SimpleGraph ();
71- graph.addEdge (u, v);
72- expect (graph.containsVertex (u), isTrue);
73- expect (graph.containsVertex (v), isTrue);
74- expect (graph.containsVertex (a), isFalse);
70+ graph.addEdge (u! , v! );
71+ expect (graph.containsVertex (u! ), isTrue);
72+ expect (graph.containsVertex (v! ), isTrue);
73+ expect (graph.containsVertex (a! ), isFalse);
7574 });
7675
7776 test ('Checks for vertex by key' , () {
78- expect (simpleGraph.containsVertex (a), isTrue);
79- expect (simpleGraph.containsVertex (u), isFalse);
77+ expect (simpleGraph? .containsVertex (a! ), isTrue);
78+ expect (simpleGraph? .containsVertex (u! ), isFalse);
8079 });
8180
8281 test ('Adds a new vertex' , () {
83- expect (simpleGraph.containsVertex (u), isFalse);
84- expect (simpleGraph.addVertex (u), isTrue);
85- expect (simpleGraph.containsVertex (u), isTrue);
82+ expect (simpleGraph? .containsVertex (u! ), isFalse);
83+ expect (simpleGraph? .addVertex (u! ), isTrue);
84+ expect (simpleGraph? .containsVertex (u! ), isTrue);
8685 });
8786
8887 test ('Does not add vertex with existing key' , () {
89- var aDuplicate = Vertex (a.key);
90- expect (simpleGraph.numberOfVertices, equals (6 ));
91- expect (simpleGraph.addVertex (a), isFalse);
92- expect (simpleGraph.addVertex (aDuplicate), isFalse);
93- expect (simpleGraph.numberOfVertices, equals (6 ));
88+ var aDuplicate = Vertex (a! .key);
89+ expect (simpleGraph? .numberOfVertices, equals (6 ));
90+ expect (simpleGraph? .addVertex (a! ), isFalse);
91+ expect (simpleGraph? .addVertex (aDuplicate), isFalse);
92+ expect (simpleGraph? .numberOfVertices, equals (6 ));
9493 });
9594
9695 test ('Remove a vertex from graph' , () {
97- expect (simpleGraph.numberOfVertices, equals (6 ));
98- expect (simpleGraph.numberOfEdges, equals (6 ));
99- expect (simpleGraph.removeVertex (a), isTrue);
100- expect (simpleGraph.numberOfEdges, equals (3 ));
101- expect (simpleGraph.numberOfVertices, equals (5 ));
96+ expect (simpleGraph? .numberOfVertices, equals (6 ));
97+ expect (simpleGraph? .numberOfEdges, equals (6 ));
98+ expect (simpleGraph? .removeVertex (a! ), isTrue);
99+ expect (simpleGraph? .numberOfEdges, equals (3 ));
100+ expect (simpleGraph? .numberOfVertices, equals (5 ));
102101 });
103102
104103 test ('Remove an isolated vertex from graph' , () {
105- expect (u.isIsolated, isTrue);
106- expect (simpleGraph.addVertex (u), isTrue);
107- expect (simpleGraph.numberOfVertices, equals (7 ));
108- expect (simpleGraph.numberOfEdges, equals (6 ));
109- expect (simpleGraph.removeVertex (u), isTrue);
110- expect (simpleGraph.numberOfVertices, equals (6 ));
111- expect (simpleGraph.numberOfEdges, equals (6 ));
104+ expect (u! .isIsolated, isTrue);
105+ expect (simpleGraph? .addVertex (u! ), isTrue);
106+ expect (simpleGraph? .numberOfVertices, equals (7 ));
107+ expect (simpleGraph? .numberOfEdges, equals (6 ));
108+ expect (simpleGraph? .removeVertex (u! ), isTrue);
109+ expect (simpleGraph? .numberOfVertices, equals (6 ));
110+ expect (simpleGraph? .numberOfEdges, equals (6 ));
112111 });
113112
114113 test ('Removing a non-existent vertex has no effect' , () {
115- expect (simpleGraph.numberOfVertices, equals (6 ));
116- expect (simpleGraph.numberOfEdges, equals (6 ));
117- expect (simpleGraph.removeVertex (u), isFalse);
118- expect (simpleGraph.numberOfVertices, equals (6 ));
119- expect (simpleGraph.numberOfEdges, equals (6 ));
114+ expect (simpleGraph? .numberOfVertices, equals (6 ));
115+ expect (simpleGraph? .numberOfEdges, equals (6 ));
116+ expect (simpleGraph? .removeVertex (u! ), isFalse);
117+ expect (simpleGraph? .numberOfVertices, equals (6 ));
118+ expect (simpleGraph? .numberOfEdges, equals (6 ));
120119 });
121120
122121 test ('Remove an edge from graph' , () {
123- expect (simpleGraph.numberOfEdges, equals (6 ));
124- expect (simpleGraph.removeEdge (a, b), isTrue);
125- expect (simpleGraph.numberOfEdges, equals (5 ));
122+ expect (simpleGraph? .numberOfEdges, equals (6 ));
123+ expect (simpleGraph? .removeEdge (a! , b! ), isTrue);
124+ expect (simpleGraph? .numberOfEdges, equals (5 ));
126125 });
127126
128127 test ('Do no remove edge that does not exist' , () {
129- expect (simpleGraph.numberOfEdges, equals (6 ));
130- expect (simpleGraph.removeEdge (a, c), isFalse);
131- expect (simpleGraph.numberOfEdges, equals (6 ));
128+ expect (simpleGraph? .numberOfEdges, equals (6 ));
129+ expect (simpleGraph? .removeEdge (a! , c! ), isFalse);
130+ expect (simpleGraph? .numberOfEdges, equals (6 ));
132131 });
133132
134133 test ('Check for NULL graph' , () {
135- expect (emptyGraph.isNull, isTrue);
136- expect (simpleGraph.isNull, isFalse);
134+ expect (emptyGraph? .isNull, isTrue);
135+ expect (simpleGraph? .isNull, isFalse);
137136 });
138137
139138 test ('Check for singleton graph' , () {
140- expect (emptyGraph.isSingleton, isFalse);
141- expect (simpleGraph.isSingleton, isFalse);
139+ expect (emptyGraph? .isSingleton, isFalse);
140+ expect (simpleGraph? .isSingleton, isFalse);
142141
143142 var graph = SimpleGraph ();
144- graph.addVertex (u);
143+ graph.addVertex (u! );
145144 expect (graph.isSingleton, isTrue);
146145 });
147146
148147 test ('Check for empty graph' , () {
149- expect (emptyGraph.isEmpty, isTrue);
150- expect (simpleGraph.isEmpty, isFalse);
148+ expect (emptyGraph? .isEmpty, isTrue);
149+ expect (simpleGraph? .isEmpty, isFalse);
151150
152151 var graph = SimpleGraph ();
153- graph.addVertex (u);
154- graph.addVertex (v);
152+ graph.addVertex (u! );
153+ graph.addVertex (v! );
155154 expect (graph.isEmpty, isTrue);
156- graph.addEdge (u, v);
155+ graph.addEdge (u! , v! );
157156 expect (graph.isEmpty, isFalse);
158157 });
159158
160159 test ('Get edges of graph' , () {
161- expect (emptyGraph.edges, isEmpty);
160+ expect (emptyGraph? .edges, isEmpty);
162161 var expectedEdges = {
163162 {a, b, 1 },
164163 {a, f, 1 },
@@ -167,14 +166,14 @@ void main() {
167166 {f, e, 7 },
168167 {c, d, 1 }
169168 };
170- expect (simpleGraph.edges.toSet (), equals (expectedEdges));
169+ expect (simpleGraph? .edges.toSet (), equals (expectedEdges));
171170 });
172171
173172 test ('addConnection on a cherry picked vertex throws error' , () {
174- var vertices = simpleGraph.vertices;
173+ var vertices = simpleGraph? .vertices;
175174 var leak = Vertex ('LEAK' );
176175 leak.unlock ();
177- expect (() => vertices[0 ].addConnection (leak),
176+ expect (() => vertices! [0 ].addConnection (leak),
178177 throwsA (isA <UnsupportedError >()));
179178 });
180179}
0 commit comments