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"); }
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()); }
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"); }