public void ShouldBeAbleToRetrieveMultipleIndirectCycleTakingOrderIntoAccount() { //GIVEN var cache = new NamespacesDependenciesCache(); var namespace1 = new NamespaceName("a"); var namespace2 = new NamespaceName("b"); var namespace3 = new NamespaceName("c"); var namespace4 = new NamespaceName("d"); cache.AddMapping(namespace1, namespace2); cache.AddMapping(namespace2, namespace1); cache.AddMapping(namespace1, namespace3); cache.AddMapping(namespace3, namespace4); cache.AddMapping(namespace4, namespace1); //WHEN var cycles = cache.RetrieveCycles(); //THEN cycles[0].Should().Be(NamespaceDependencyPath.With( namespace1, namespace2, namespace1 )); cycles[1].Should().Be(NamespaceDependencyPath.With( namespace1, namespace3, namespace4, namespace1 )); cycles.Should().HaveCount(2); }
public void ShouldReturnNoCyclesWhenNoMappingsWereAdded() { //GIVEN var cache = new NamespacesDependenciesCache(); //WHEN var cycles = cache.RetrieveCycles(); //THEN cycles.Should().BeEmpty(); }
public void ShouldReturnNoCyclesWhenMappingExistsBetweenANamespaceAndItself() { //GIVEN var cache = new NamespacesDependenciesCache(); var namespace1 = Any.Instance <NamespaceName>(); cache.AddMapping(namespace1, namespace1); //WHEN var cycles = cache.RetrieveCycles(); //THEN cycles.Should().BeEmpty(); }
public void ShouldReturnNoCyclesWhenMappingsAddedDoNotMakeTheCycle() { //GIVEN var cache = new NamespacesDependenciesCache(); var namespace1 = Any.Instance <NamespaceName>(); var namespace2 = Any.Instance <NamespaceName>(); var namespace3 = Any.Instance <NamespaceName>(); cache.AddMapping(namespace1, namespace2); cache.AddMapping(namespace2, namespace3); //WHEN var cycles = cache.RetrieveCycles(); //THEN cycles.Should().BeEmpty(); }
public void ShouldBeAbleToRetrieveSingleDirectCycle() { //GIVEN var cache = new NamespacesDependenciesCache(); var namespace1 = new NamespaceName("a"); var namespace2 = new NamespaceName("b"); cache.AddMapping(namespace1, namespace2); cache.AddMapping(namespace2, namespace1); //WHEN var cycles = cache.RetrieveCycles(); //THEN cycles.Single().Should().Be(new NamespaceDependencyPath( new List <NamespaceName> { namespace1, namespace2, namespace1 }.ToImmutableList())); }