Skip to content

Commit 7b398d0

Browse files
committed
TopologicalSorter is able to return both IEnumerable and Collection
1 parent 333875a commit 7b398d0

File tree

2 files changed

+213
-75
lines changed

2 files changed

+213
-75
lines changed

Orm/Xtensive.Orm.Tests.Core/Helpers/TopologicalSorterTest.cs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ private static void InternalPerformanceTest(int nodeCount, int averageConnection
6161
GC.GetTotalMemory(true);
6262
using (new Measurement("Sorting", nodeCount + connectionCount)) {
6363
List<Node<int, int>> removedEdges;
64-
var result = TopologicalSorter.Sort(nodes, out removedEdges);
64+
var result = TopologicalSorter.SortToList(nodes, out removedEdges);
6565
if (!allowLoops)
66-
Assert.AreEqual(nodeCount, result.Count());
66+
Assert.AreEqual(nodeCount, result.Count);
6767
}
6868
GC.GetTotalMemory(true);
6969
}
@@ -75,8 +75,7 @@ public void SelfReferenceTest()
7575
var connection = new NodeConnection<int, string>(node, node, "ConnectionItem");
7676
connection.BindToNodes();
7777

78-
List<NodeConnection<int, string>> removedEdges;
79-
List<int> result = TopologicalSorter.Sort(EnumerableUtils.One(node), out removedEdges);
78+
var result = TopologicalSorter.SortToList(EnumerableUtils.One(node), out var removedEdges);
8079
Assert.AreEqual(1, result.Count);
8180
Assert.AreEqual(node.Item, result[0]);
8281
Assert.AreEqual(1, removedEdges.Count);
@@ -97,8 +96,7 @@ public void RemoveWholeNodeTest()
9796

9897
// Remove edge by edge.
9998

100-
List<NodeConnection<int, string>> removedEdges;
101-
List<int> result = TopologicalSorter.Sort(new[] {node2, node1}, out removedEdges);
99+
var result = TopologicalSorter.SortToList(new[] {node2, node1}, out List<NodeConnection<int, string>> removedEdges);
102100
Assert.AreEqual(2, result.Count);
103101
Assert.AreEqual(node1.Item, result[0]);
104102
Assert.AreEqual(node2.Item, result[1]);
@@ -111,7 +109,7 @@ public void RemoveWholeNodeTest()
111109
connection12_2.BindToNodes();
112110
connection21_1.BindToNodes();
113111

114-
result = TopologicalSorter.Sort(new[] {node2, node1}, out removedEdges, true);
112+
result = TopologicalSorter.SortToList(new[] {node2, node1}, out removedEdges, true);
115113
Assert.AreEqual(2, result.Count);
116114
Assert.AreEqual(node1.Item, result[1]);
117115
Assert.AreEqual(node2.Item, result[0]);
@@ -131,8 +129,7 @@ public void CombinedTest()
131129

132130
private void TestSort<T>(T[] data, Predicate<T, T> connector, T[] expected, T[] loops)
133131
{
134-
List<Node<T, object>> actualLoopNodes;
135-
List<T> actual = TopologicalSorter.Sort(data, connector, out actualLoopNodes).ToList();
132+
var actual = TopologicalSorter.SortToList(data, connector, out List<Node<T, object>> actualLoopNodes);
136133
T[] actualLoops = null;
137134
if (actualLoopNodes != null)
138135
actualLoops = actualLoopNodes
@@ -143,8 +140,7 @@ private void TestSort<T>(T[] data, Predicate<T, T> connector, T[] expected, T[]
143140
AssertEx.HasSameElements(expected, actual);
144141
AssertEx.HasSameElements(loops, actualLoops);
145142

146-
List<NodeConnection<T, object>> removedEdges;
147-
List<T> sortWithRemove = TopologicalSorter.Sort(data, connector, out removedEdges);
143+
var sortWithRemove = TopologicalSorter.SortToList(data, connector, out List<NodeConnection<T, object>> removedEdges);
148144
Assert.AreEqual(sortWithRemove.Count, data.Length);
149145
if (loops == null) {
150146
Assert.AreEqual(sortWithRemove.Count, actual.Count);

0 commit comments

Comments
 (0)