Skip to content

Commit c62bdcc

Browse files
committed
Add tests for serialization of complex heterogenous structures.
1 parent 74c396b commit c62bdcc

8 files changed

Lines changed: 1822 additions & 436 deletions

tests/QuikGraph.Serialization.Tests/BinarySerializationTests.cs

Lines changed: 89 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ private static TGraph SerializeDeserialize<TVertex, TEdge, TGraph>([NotNull] TGr
4141
#endregion
4242

4343
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationAdjacencyGraphTestCases))]
44-
public void BinarySerialization_AdjacencyGraph([NotNull] AdjacencyGraph<int, EquatableEdge<int>> graph)
44+
public void BinarySerialization_AdjacencyGraph_Simple([NotNull] AdjacencyGraph<int, EquatableEdge<int>> graph)
4545
{
4646
AdjacencyGraph<int, EquatableEdge<int>> deserializedGraph1 =
4747
SerializeDeserialize<int, EquatableEdge<int>, AdjacencyGraph<int, EquatableEdge<int>>>(graph);
@@ -53,33 +53,71 @@ public void BinarySerialization_AdjacencyGraph([NotNull] AdjacencyGraph<int, Equ
5353
Assert.IsTrue(EquateGraphs.Equate(arrayGraph, deserializedGraph2));
5454
}
5555

56+
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationAdjacencyGraphComplexTestCases))]
57+
public void BinarySerialization_AdjacencyGraph_Complex([NotNull] AdjacencyGraph<EquatableTestVertex, EquatableTestEdge> graph)
58+
{
59+
AdjacencyGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph1 =
60+
SerializeDeserialize<EquatableTestVertex, EquatableTestEdge, AdjacencyGraph<EquatableTestVertex, EquatableTestEdge>>(graph);
61+
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph1));
62+
63+
var arrayGraph = new ArrayAdjacencyGraph<EquatableTestVertex, EquatableTestEdge>(graph);
64+
ArrayAdjacencyGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph2 =
65+
SerializeDeserialize<EquatableTestVertex, EquatableTestEdge, ArrayAdjacencyGraph<EquatableTestVertex, EquatableTestEdge>>(arrayGraph);
66+
Assert.IsTrue(EquateGraphs.Equate(arrayGraph, deserializedGraph2));
67+
}
68+
5669
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationAdjacencyGraphTestCases))]
57-
public void BinarySerialization_AdapterGraph([NotNull] AdjacencyGraph<int, EquatableEdge<int>> graph)
70+
public void BinarySerialization_AdapterGraph_Simple([NotNull] AdjacencyGraph<int, EquatableEdge<int>> graph)
5871
{
5972
var bidirectionalAdapterGraph = new BidirectionalAdapterGraph<int, EquatableEdge<int>>(graph);
6073
BidirectionalAdapterGraph<int, EquatableEdge<int>> deserializedGraph =
6174
SerializeDeserialize<int, EquatableEdge<int>, BidirectionalAdapterGraph<int, EquatableEdge<int>>>(bidirectionalAdapterGraph);
6275
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph));
6376
}
6477

78+
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationAdjacencyGraphComplexTestCases))]
79+
public void BinarySerialization_AdapterGraph_Complex([NotNull] AdjacencyGraph<EquatableTestVertex, EquatableTestEdge> graph)
80+
{
81+
var bidirectionalAdapterGraph = new BidirectionalAdapterGraph<EquatableTestVertex, EquatableTestEdge>(graph);
82+
BidirectionalAdapterGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph =
83+
SerializeDeserialize<EquatableTestVertex, EquatableTestEdge, BidirectionalAdapterGraph<EquatableTestVertex, EquatableTestEdge>>(bidirectionalAdapterGraph);
84+
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph));
85+
}
86+
6587
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationClusteredAdjacencyGraphTestCases))]
66-
public void BinarySerialization_ClusteredGraph([NotNull] ClusteredAdjacencyGraph<int, EquatableEdge<int>> graph)
88+
public void BinarySerialization_ClusteredGraph_Simple([NotNull] ClusteredAdjacencyGraph<int, EquatableEdge<int>> graph)
6789
{
6890
ClusteredAdjacencyGraph<int, EquatableEdge<int>> deserializedGraph =
6991
SerializeDeserialize<int, EquatableEdge<int>, ClusteredAdjacencyGraph<int, EquatableEdge<int>>>(graph);
7092
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph));
7193
}
7294

95+
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationClusteredAdjacencyGraphComplexTestCases))]
96+
public void BinarySerialization_ClusteredGraph_Complex([NotNull] ClusteredAdjacencyGraph<EquatableTestVertex, EquatableTestEdge> graph)
97+
{
98+
ClusteredAdjacencyGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph =
99+
SerializeDeserialize<EquatableTestVertex, EquatableTestEdge, ClusteredAdjacencyGraph<EquatableTestVertex, EquatableTestEdge>>(graph);
100+
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph));
101+
}
102+
73103
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationCompressedGraphTestCases))]
74-
public void BinarySerialization_CompressedGraph([NotNull] CompressedSparseRowGraph<int> graph)
104+
public void BinarySerialization_CompressedGraph_Simple([NotNull] CompressedSparseRowGraph<int> graph)
75105
{
76106
CompressedSparseRowGraph<int> deserializedGraph =
77107
SerializeDeserialize<int, SEquatableEdge<int>, CompressedSparseRowGraph<int>>(graph);
78108
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph));
79109
}
80110

111+
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationCompressedGraphComplexTestCases))]
112+
public void BinarySerialization_CompressedGraph_Complex([NotNull] CompressedSparseRowGraph<EquatableTestVertex> graph)
113+
{
114+
CompressedSparseRowGraph<EquatableTestVertex> deserializedGraph =
115+
SerializeDeserialize<EquatableTestVertex, SEquatableEdge<EquatableTestVertex>, CompressedSparseRowGraph<EquatableTestVertex>>(graph);
116+
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph));
117+
}
118+
81119
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationBidirectionalGraphTestCases))]
82-
public void BinarySerialization_BidirectionalGraph([NotNull] BidirectionalGraph<int, EquatableEdge<int>> graph)
120+
public void BinarySerialization_BidirectionalGraph_Simple([NotNull] BidirectionalGraph<int, EquatableEdge<int>> graph)
83121
{
84122
BidirectionalGraph<int, EquatableEdge<int>> deserializedGraph =
85123
SerializeDeserialize<int, EquatableEdge<int>, BidirectionalGraph<int, EquatableEdge<int>>>(graph);
@@ -101,6 +139,29 @@ public void BinarySerialization_BidirectionalGraph([NotNull] BidirectionalGraph<
101139
Assert.IsTrue(EquateGraphs.Equate(undirectedBidirectionalGraph, deserializedGraph4));
102140
}
103141

142+
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationBidirectionalGraphComplexTestCases))]
143+
public void BinarySerialization_BidirectionalGraph_Complex([NotNull] BidirectionalGraph<EquatableTestVertex, EquatableTestEdge> graph)
144+
{
145+
BidirectionalGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph =
146+
SerializeDeserialize<EquatableTestVertex, EquatableTestEdge, BidirectionalGraph<EquatableTestVertex, EquatableTestEdge>>(graph);
147+
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph));
148+
149+
var arrayGraph = new ArrayBidirectionalGraph<EquatableTestVertex, EquatableTestEdge>(graph);
150+
ArrayBidirectionalGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph2 =
151+
SerializeDeserialize<EquatableTestVertex, EquatableTestEdge, ArrayBidirectionalGraph<EquatableTestVertex, EquatableTestEdge>>(arrayGraph);
152+
Assert.IsTrue(EquateGraphs.Equate(arrayGraph, deserializedGraph2));
153+
154+
var reversedGraph = new ReversedBidirectionalGraph<EquatableTestVertex, EquatableTestEdge>(graph);
155+
ReversedBidirectionalGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph3 =
156+
SerializeDeserialize<EquatableTestVertex, SReversedEdge<EquatableTestVertex, EquatableTestEdge>, ReversedBidirectionalGraph<EquatableTestVertex, EquatableTestEdge>>(reversedGraph);
157+
Assert.IsTrue(EquateGraphs.Equate(reversedGraph, deserializedGraph3));
158+
159+
var undirectedBidirectionalGraph = new UndirectedBidirectionalGraph<EquatableTestVertex, EquatableTestEdge>(graph);
160+
UndirectedBidirectionalGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph4 =
161+
SerializeDeserialize<EquatableTestVertex, EquatableTestEdge, UndirectedBidirectionalGraph<EquatableTestVertex, EquatableTestEdge>>(undirectedBidirectionalGraph);
162+
Assert.IsTrue(EquateGraphs.Equate(undirectedBidirectionalGraph, deserializedGraph4));
163+
}
164+
104165
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationBidirectionalMatrixGraphTestCases))]
105166
public void BinarySerialization_BidirectionalMatrixGraph([NotNull] BidirectionalMatrixGraph<EquatableEdge<int>> graph)
106167
{
@@ -110,7 +171,7 @@ public void BinarySerialization_BidirectionalMatrixGraph([NotNull] Bidirectional
110171
}
111172

112173
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationUndirectedGraphTestCases))]
113-
public void BinarySerialization_UndirectedGraph([NotNull] UndirectedGraph<int, EquatableEdge<int>> graph)
174+
public void BinarySerialization_UndirectedGraph_Simple([NotNull] UndirectedGraph<int, EquatableEdge<int>> graph)
114175
{
115176
UndirectedGraph<int, EquatableEdge<int>> deserializedGraph1 =
116177
SerializeDeserialize<int, EquatableEdge<int>, UndirectedGraph<int, EquatableEdge<int>>>(graph);
@@ -122,14 +183,35 @@ public void BinarySerialization_UndirectedGraph([NotNull] UndirectedGraph<int, E
122183
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph2));
123184
}
124185

186+
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationUndirectedGraphComplexTestCases))]
187+
public void BinarySerialization_UndirectedGraph_Complex([NotNull] UndirectedGraph<EquatableTestVertex, EquatableTestEdge> graph)
188+
{
189+
UndirectedGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph1 =
190+
SerializeDeserialize<EquatableTestVertex, EquatableTestEdge, UndirectedGraph<EquatableTestVertex, EquatableTestEdge>>(graph);
191+
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph1));
192+
193+
var arrayGraph = new ArrayUndirectedGraph<EquatableTestVertex, EquatableTestEdge>(graph);
194+
ArrayUndirectedGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph2 =
195+
SerializeDeserialize<EquatableTestVertex, EquatableTestEdge, ArrayUndirectedGraph<EquatableTestVertex, EquatableTestEdge>>(arrayGraph);
196+
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph2));
197+
}
198+
125199
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationEdgeListGraphTestCases))]
126-
public void BinarySerialization_EdgeListGraph([NotNull] EdgeListGraph<int, EquatableEdge<int>> graph)
200+
public void BinarySerialization_EdgeListGraph_Simple([NotNull] EdgeListGraph<int, EquatableEdge<int>> graph)
127201
{
128202
EdgeListGraph<int, EquatableEdge<int>> deserializedGraph =
129203
SerializeDeserialize<int, EquatableEdge<int>, EdgeListGraph<int, EquatableEdge<int>>>(graph);
130204
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph));
131205
}
132206

207+
[TestCaseSource(typeof(SerializationTestCaseSources), nameof(SerializationEdgeListGraphComplexTestCases))]
208+
public void BinarySerialization_EdgeListGraph_Complex([NotNull] EdgeListGraph<EquatableTestVertex, EquatableTestEdge> graph)
209+
{
210+
EdgeListGraph<EquatableTestVertex, EquatableTestEdge> deserializedGraph =
211+
SerializeDeserialize<EquatableTestVertex, EquatableTestEdge, EdgeListGraph<EquatableTestVertex, EquatableTestEdge>>(graph);
212+
Assert.IsTrue(EquateGraphs.Equate(graph, deserializedGraph));
213+
}
214+
133215
#region Test classes
134216

135217
public class TestStream : Stream

0 commit comments

Comments
 (0)