public void DeltaPropagationSelector_must_bump_version_for_each_update()
        {
            var delta1 = GSet <string> .Empty.Add("a1");

            var delta2 = GSet <string> .Empty.Add("a2");

            var delta3 = GSet <string> .Empty.Add("a3");

            var selector = new TestSelector(selfUniqueAddress, nodes.Take(1).ToImmutableArray());

            selector.Update("A", delta1);
            selector.CurrentVersion("A").Should().Be(1L);
            selector.Update("A", delta2);
            selector.CurrentVersion("A").Should().Be(2L);
            var expected1 = new DeltaPropagation(selfUniqueAddress, false, ImmutableDictionary <string, Delta> .Empty
                                                 .Add("A", new Delta(new DataEnvelope(delta1.Merge(delta2)), 1L, 2L)));

            selector.CollectPropagations().Should().Equal(ImmutableDictionary.CreateRange(new[] { new KeyValuePair <Address, DeltaPropagation>(nodes[0], expected1), }));
            selector.Update("A", delta3);
            selector.CurrentVersion("A").Should().Be(3L);
            var expected2 = new DeltaPropagation(selfUniqueAddress, false, ImmutableDictionary <string, Delta> .Empty
                                                 .Add("A", new Delta(new DataEnvelope(delta3), 3L, 3L)));

            selector.CollectPropagations().Should().Equal(ImmutableDictionary.CreateRange(new[] { new KeyValuePair <Address, DeltaPropagation>(nodes[0], expected2), }));
            selector.CollectPropagations().Should().BeEmpty();
        }