-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTarjanTests.cs
31 lines (25 loc) · 989 Bytes
/
TarjanTests.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
using CodeParser.Analysis.Cycles;
using CodeParser.Analysis.Shared;
using GraphLib.Algorithms.StronglyConnectedComponents;
namespace CodeParserTests;
[TestFixture]
public class TarjanTests
{
[Test]
public void FindStronglyConnectedComponents_SimpleCircularDependency_ReturnsSingleSCC()
{
var nodeA = new SearchNode("A", null!);
var nodeB = new SearchNode("B", null!);
var nodeC = new SearchNode("C", null!);
nodeA.Dependencies.Add(nodeB);
nodeB.Dependencies.Add(nodeC);
nodeC.Dependencies.Add(nodeA);
var graph = new List<SearchNode> { nodeA, nodeB, nodeC };
var sccs = Tarjan.FindStronglyConnectedComponents(new SearchGraph(graph));
Assert.AreEqual(1, sccs.Count);
Assert.AreEqual(3, sccs[0].Vertices.Count);
Assert.IsTrue(sccs[0].Vertices.Contains(nodeA));
Assert.IsTrue(sccs[0].Vertices.Contains(nodeB));
Assert.IsTrue(sccs[0].Vertices.Contains(nodeC));
}
}