-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMutableVertexAndEdgeListGraphTest.cs
98 lines (85 loc) · 3.37 KB
/
MutableVertexAndEdgeListGraphTest.cs
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
91
92
93
94
95
96
97
98
using System;
using Microsoft.Pex.Framework;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace QuickGraph
{
[TestClass, PexClass(MaxRuns = 50)]
public partial class MutableVertexAndEdgeListGraphTest
{
[PexMethod]
public void AddVertexOnly([PexAssumeNotNull]IMutableVertexAndEdgeListGraph<string, Edge<string>> g, string v)
{
int vertexCount = g.VertexCount;
g.AddVertex(v);
Assert.AreEqual(vertexCount + 1, g.VertexCount);
Assert.IsTrue(g.ContainsVertex(v));
VerifyCounts(g);
}
[PexMethod]
public void AddAndRemoveVertex([PexAssumeNotNull]IMutableVertexAndEdgeListGraph<int, Edge<int>> g, int v)
{
int vertexCount = g.VertexCount;
g.AddVertex(v);
Assert.AreEqual(vertexCount + 1, g.VertexCount);
Assert.IsTrue(g.ContainsVertex(v));
g.RemoveVertex(v);
Assert.AreEqual(vertexCount, g.VertexCount);
Assert.IsFalse(g.ContainsVertex(v));
//VerifyCounts(g);
}
[PexMethod]
public void AddVertexAddEdgesAndRemoveTargetVertex([PexAssumeNotNull]IMutableVertexAndEdgeListGraph<string, Edge<string>> g, string v1, string v2)
{
int vertexCount = g.VertexCount;
int edgeCount = g.EdgeCount;
g.AddVertex(v1);
g.AddVertex(v2);
Assert.AreEqual(vertexCount + 2, g.VertexCount);
Assert.IsTrue(g.ContainsVertex(v1));
Assert.IsTrue(g.ContainsVertex(v2));
g.AddEdge(new Edge<string>(v1, v2));
Assert.AreEqual(edgeCount + 1, g.EdgeCount);
g.RemoveVertex(v2);
Assert.AreEqual(vertexCount + 1, g.VertexCount);
Assert.AreEqual(edgeCount, g.EdgeCount);
Assert.IsTrue(g.ContainsVertex(v1));
Assert.IsFalse(g.ContainsVertex(v2));
VerifyCounts(g);
}
[PexMethod]
public void AddVertexAddEdgesAndRemoveSourceVertex([PexAssumeNotNull]IMutableVertexAndEdgeListGraph<string, Edge<string>> g, string v1, string v2)
{
int vertexCount = g.VertexCount;
int edgeCount = g.EdgeCount;
g.AddVertex(v1);
g.AddVertex(v2);
Assert.AreEqual(vertexCount + 2, g.VertexCount);
Assert.IsTrue(g.ContainsVertex(v1));
Assert.IsTrue(g.ContainsVertex(v2));
g.AddEdge(new Edge<string>(v1, v2));
Assert.AreEqual(edgeCount + 1, g.EdgeCount);
g.RemoveVertex(v1);
Assert.AreEqual(vertexCount + 1, g.VertexCount);
Assert.AreEqual(edgeCount, g.EdgeCount);
Assert.IsTrue(g.ContainsVertex(v2));
Assert.IsFalse(g.ContainsVertex(v1));
VerifyCounts(g);
}
private void VerifyCounts(IMutableVertexAndEdgeListGraph<string, Edge<string>> g)
{
int i = 0;
foreach (string v in g.Vertices)
i++;
Assert.AreEqual(g.VertexCount, i);
i = 0;
foreach (string v in g.Vertices)
foreach (Edge<string> e in g.OutEdges(v))
i++;
Assert.AreEqual(g.EdgeCount, i);
i = 0;
foreach (Edge<string> e in g.Edges)
i++;
Assert.AreEqual(g.EdgeCount, i);
}
}
}