Akka.Cluster.Tests.ReachabilitySpec.ReachabilityTable_must_have_correct_status_for_a_mix_of_nodes C# (CSharp) Метод

ReachabilityTable_must_have_correct_status_for_a_mix_of_nodes() приватный Метод

private ReachabilityTable_must_have_correct_status_for_a_mix_of_nodes ( ) : void
Результат void
        public void ReachabilityTable_must_have_correct_status_for_a_mix_of_nodes()
        {
            var r = Reachability.Empty.
                Unreachable(nodeB, nodeA).Unreachable(nodeC, nodeA).Unreachable(nodeD, nodeA).
                Unreachable(nodeC, nodeB).Reachable(nodeC, nodeB).Unreachable(nodeD, nodeB).
                Unreachable(nodeD, nodeC).Reachable(nodeD, nodeC).
                Reachable(nodeE, nodeD).
                Unreachable(nodeA, nodeE).Terminated(nodeB, nodeE);

            Assert.Equal(Reachability.ReachabilityStatus.Unreachable, r.Status(nodeB, nodeA));
            Assert.Equal(Reachability.ReachabilityStatus.Unreachable, r.Status(nodeC, nodeA));
            Assert.Equal(Reachability.ReachabilityStatus.Unreachable, r.Status(nodeD, nodeA));

            Assert.Equal(Reachability.ReachabilityStatus.Reachable, r.Status(nodeC, nodeB));
            Assert.Equal(Reachability.ReachabilityStatus.Unreachable, r.Status(nodeD, nodeB));

            Assert.Equal(Reachability.ReachabilityStatus.Unreachable, r.Status(nodeA, nodeE));
            Assert.Equal(Reachability.ReachabilityStatus.Terminated, r.Status(nodeB, nodeE));

            Assert.False(r.IsReachable(nodeA));
            Assert.False(r.IsReachable(nodeB));
            Assert.True(r.IsReachable(nodeC));
            Assert.True(r.IsReachable(nodeD));
            Assert.False(r.IsReachable(nodeE));

            Assert.Equal(ImmutableHashSet.Create(nodeA, nodeB), r.AllUnreachable);
            Assert.Equal(ImmutableHashSet.Create(nodeE), r.AllUnreachableFrom(nodeA));
            Assert.Equal(ImmutableHashSet.Create(nodeA), r.AllUnreachableFrom(nodeB));
            Assert.Equal(ImmutableHashSet.Create(nodeA), r.AllUnreachableFrom(nodeC));
            Assert.Equal(ImmutableHashSet.Create(nodeA, nodeB), r.AllUnreachableFrom(nodeD));

            var expected = new Dictionary<UniqueAddress, ImmutableHashSet<UniqueAddress>>
            {
                {nodeA, ImmutableHashSet.Create(nodeB, nodeC, nodeD)},
                {nodeB, ImmutableHashSet.Create(nodeD)},
                {nodeE, ImmutableHashSet.Create(nodeA)}
            }.ToImmutableDictionary();

            r.ObserversGroupedByUnreachable
                .Should()
                .HaveCount(3);

            foreach (var pair in r.ObserversGroupedByUnreachable)
            {
                pair.Value.ShouldBeEquivalentTo(expected[pair.Key]);
            }
        }