public void A_gossip_must_merge_seen_table_correctly()
{
var vclockNode = VectorClock.Node.Create("something");
var g1 =
new Gossip(ImmutableSortedSet.Create(a1, b1, c1, d1)).Increment(vclockNode)
.Seen(a1.UniqueAddress)
.Seen(b1.UniqueAddress);
var g2 =
new Gossip(ImmutableSortedSet.Create(a1, b1, c1, d1)).Increment(vclockNode)
.Seen(a1.UniqueAddress)
.Seen(c1.UniqueAddress);
var g3 = g1.Copy(version: g2.Version).Seen(d1.UniqueAddress);
Action<Gossip> checkMerge = (m) =>
{
var seen = m.Overview.Seen;
Assert.Equal(0, seen.Count());
Assert.False(m.SeenByNode(a1.UniqueAddress));
Assert.False(m.SeenByNode(b1.UniqueAddress));
Assert.False(m.SeenByNode(c1.UniqueAddress));
Assert.False(m.SeenByNode(d1.UniqueAddress));
Assert.False(m.SeenByNode(e1.UniqueAddress));
};
checkMerge(g3.Merge(g2));
checkMerge(g2.Merge(g3));
}