public void MergeRemoves_IsCommutative() { var firstValue = _builder.Build(); var secondValue = _builder.Build(); var thirdValue = _builder.Build(); var fourthValue = _builder.Build(); var fifthValue = _builder.Build(); var firstRepository = new P_SetRepository(); var firstService = new P_SetService <TestType>(firstRepository); firstRepository.PersistRemoves(new HashSet <TestType> { firstValue, secondValue, thirdValue }.ToImmutableHashSet()); firstRepository.PersistAdds(new HashSet <TestType> { fourthValue, fifthValue }.ToImmutableHashSet()); firstService.Merge(ImmutableHashSet <TestType> .Empty, new HashSet <TestType> { fourthValue, fifthValue }.ToImmutableHashSet()); var firstRepositoryValues = firstRepository.GetRemoves(); var secondRepository = new P_SetRepository(); var secondService = new P_SetService <TestType>(secondRepository); secondRepository.PersistRemoves(new HashSet <TestType> { fourthValue, fifthValue }.ToImmutableHashSet()); secondRepository.PersistAdds(new HashSet <TestType> { firstValue, secondValue, thirdValue }.ToImmutableHashSet()); secondService.Merge(ImmutableHashSet <TestType> .Empty, new HashSet <TestType> { firstValue, secondValue, thirdValue }.ToImmutableHashSet()); var secondRepositoryValues = firstRepository.GetRemoves(); Assert.Equal(firstRepositoryValues, secondRepositoryValues); }