public void ReachabilityTable_must_have_correct_aggregated_status()
{
var records = ImmutableList.Create(
new Reachability.Record(nodeA, nodeB, Reachability.ReachabilityStatus.Reachable, 2),
new Reachability.Record(nodeC, nodeB, Reachability.ReachabilityStatus.Unreachable, 2),
new Reachability.Record(nodeA, nodeD, Reachability.ReachabilityStatus.Unreachable, 3),
new Reachability.Record(nodeD, nodeB, Reachability.ReachabilityStatus.Terminated, 4)
);
var versions = ImmutableDictionary.CreateRange(new[]
{
new KeyValuePair<UniqueAddress, long>(nodeA, 3),
new KeyValuePair<UniqueAddress, long>(nodeC, 3),
new KeyValuePair<UniqueAddress, long>(nodeD, 4)
});
var r = new Reachability(records, versions);
Assert.Equal(Reachability.ReachabilityStatus.Reachable, r.Status(nodeA));
Assert.Equal(Reachability.ReachabilityStatus.Terminated, r.Status(nodeB));
Assert.Equal(Reachability.ReachabilityStatus.Unreachable, r.Status(nodeD));
}