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(); }