public void DependencyGraphHugeBranchesWithMoreBranching() { var g = new PvcCore.PvcDependencyGraph(); g.AddDependencies("A", new string[] { "B", "C", "D", "E", "F", "G", "H", "I" }); g.AddDependency("F", "J"); g.AddDependency("F", "K"); var paths = g.GetPaths("A"); var pathstrings = paths.Select(p => string.Join(" ", p)).ToList(); Assert.Equal(2, pathstrings.Count); Assert.Contains("J K I H G F E D C B A", pathstrings); Assert.Contains("K J I H G F E D C B A", pathstrings); }
public void DependencyGraphMultipleBranches() { var g = new PvcCore.PvcDependencyGraph(); g.AddDependencies("A", new string[] { "B", "C" }); g.AddDependency("B", "D"); g.AddDependency("C", "E"); g.AddDependency("E", "F"); g.AddDependency("E", "G"); var paths = g.GetPaths("A"); var pathstrings = paths.Select(p => string.Join(" ", p)).ToList(); Assert.Equal(6, pathstrings.Count); Assert.Contains("D B F G E C A", pathstrings); Assert.Contains("D B G F E C A", pathstrings); Assert.Contains("F G E C D B A", pathstrings); Assert.Contains("G F E C D B A", pathstrings); Assert.Contains("G D B F E C A", pathstrings); Assert.Contains("F D B G E C A", pathstrings); }
public void DependencyGraphSimpleChain() { var g = new PvcCore.PvcDependencyGraph(); g.AddDependency("A", "B"); g.AddDependency("B", "C"); var paths = g.GetPaths("A"); var pathstrings = paths.Select(p => string.Join(" ", p)).ToList(); Assert.Equal(1, pathstrings.Count); Assert.Contains("C B A", pathstrings); }
public void DependencyGraphTerminalCircular() { var g = new PvcCore.PvcDependencyGraph(); g.AddDependencies("A", new string[] { "B", "C" }); g.AddDependency("B", "C"); g.AddDependency("C", "B"); var paths = g.GetPaths("A"); var pathstrings = paths.Select(p => string.Join(" ", p)).ToList(); Assert.Equal(2, pathstrings.Count); Assert.Contains("C B A", pathstrings); Assert.Contains("B C A", pathstrings); }
public void DependencyGraphNonterminalCircular() { var g = new PvcCore.PvcDependencyGraph(); g.AddDependencies("A", new string[] { "B", "C" }); g.AddDependency("B", "C"); g.AddDependency("C", "B"); g.AddDependency("C", "D"); var paths = g.GetPaths("A"); // Circular dependencies can cause some duplication in the list. var pathstrings = paths.Select(p => string.Join(" ", p)).Distinct().ToList(); Assert.Equal(2, pathstrings.Count()); Assert.Contains("B D C A", pathstrings); Assert.Contains("D C B A", pathstrings); }