コード例 #1
0
        public void CyclicValidatorTest_Validate_CyclicDependencyHavingMultiplePaths()
        {
            IComponent rootComp  = new Component(GetConfig("root", "1.0", "FileShare"));
            IComponent sideComp1 = new Component(GetConfig("sideComp1", "1.0", "FileShare"));
            IComponent sideComp2 = new Component(GetConfig("sideComp2", "1.0", "FileShare"));
            IComponent sideComp3 = new Component(GetConfig("sideComp3", "1.0", "FileShare"));

            IDependency depRootSideComp1 = new Dependency(rootComp, sideComp1, new ComponentVersion("1.*"));
            IDependency depRootSideComp2 = new Dependency(sideComp1, sideComp2, new ComponentVersion("1.*"));
            IDependency depRootSideComp3 = new Dependency(sideComp1, sideComp3, new ComponentVersion("1.*"));
            IDependency depRootSideComp4 = new Dependency(sideComp2, sideComp1, new ComponentVersion("1.*"));
            IDependency depRootSideComp5 = new Dependency(sideComp3, sideComp1, new ComponentVersion("1.*"));

            rootComp.AddSuccessor(depRootSideComp1);
            sideComp1.AddSuccessor(depRootSideComp2);
            sideComp1.AddSuccessor(depRootSideComp3);
            sideComp2.AddSuccessor(depRootSideComp4);
            sideComp3.AddSuccessor(depRootSideComp5);

            var    validator = new CyclicDependencyValidator();
            IGraph graph     = new Graph(rootComp, "C:\\");

            var actual = validator.Validate(graph);

            Assert.AreEqual(2, actual.Count(), "Expected exactly one cyclic dependency for sideComp1");
        }
コード例 #2
0
        public void CyclicValidatorTest_LinearDependencyChain_MultipleEdgeToComponent3_NoCycles()
        {
            //root -> comp1 -> comp2 -> comp 3
            //           |----------------|

            IComponent rootComp  = new Component(GetConfig("root", "1.0", "FileShare"));
            IComponent sideComp1 = new Component(GetConfig("sideComp1", "1.0", "FileShare"));
            IComponent sideComp2 = new Component(GetConfig("sideComp2", "1.0", "FileShare"));
            IComponent sideComp3 = new Component(GetConfig("sideComp3", "1.0", "FileShare"));

            IDependency depRootSideComp1 = new Dependency(rootComp, sideComp1, new ComponentVersion("1.*"));
            IDependency depRootSideComp2 = new Dependency(sideComp1, sideComp2, new ComponentVersion("1.*"));
            IDependency depRootSideComp3 = new Dependency(sideComp2, sideComp3, new ComponentVersion("1.*"));
            IDependency depRootSideComp4 = new Dependency(sideComp1, sideComp3, new ComponentVersion("1.*"));

            rootComp.AddSuccessor(depRootSideComp1);
            sideComp1.AddSuccessor(depRootSideComp2);
            sideComp1.AddSuccessor(depRootSideComp4);
            sideComp2.AddSuccessor(depRootSideComp3);

            var    validator = new CyclicDependencyValidator();
            IGraph graph     = new Graph(rootComp, "C:\\");

            var actual = validator.Validate(graph);

            Assert.AreEqual(0, actual.Count());
        }
コード例 #3
0
        public void CyclicValidatorTest_Validate_SelfDepedency_Cycle()
        {
            //sideComp1 -> sideComp1 ...

            IComponent  sideComp1        = new Component(GetConfig("sideComp1", "1.0", "FileShare"));
            IDependency depRootSideComp1 = new Dependency(sideComp1, sideComp1, new ComponentVersion("1.*"));

            sideComp1.AddSuccessor(depRootSideComp1);

            var    validator = new CyclicDependencyValidator();
            IGraph graph     = new Graph(sideComp1, "C:\\");

            var actual = validator.Validate(graph);

            Assert.AreEqual(1, actual.Count(), "Expected exactly one conflict for sideComp1");
        }