Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }