public void AddAndRemoveProduceNothing() { var add = _changes.Single(c => c.Reason == ChangeReason.Add); var remove = _changes.Single(c => c.Reason == ChangeReason.Remove); var result = ChangesReducer.Reduce(add, remove); result.HasValue.Should().Be(false); }
public void RemoveAndAddProduceUpdate() { var remove = _changes.Single(c => c.Reason == ChangeReason.Remove); var add = _changes.Single(c => c.Reason == ChangeReason.Add); var result = ChangesReducer.Reduce(remove, add); var expected = new Change <Person, string>(ChangeReason.Update, _testEntity.Key, add.Current, remove.Current, add.CurrentIndex, remove.CurrentIndex); result.Value.Should().Be(expected); }
public void AddAndUpdateProduceAdd() { var updatedEntity = new Person(_testEntity.Key, 55); var newIndex = _testIndex + 1; var add = new Change <Person, string>(ChangeReason.Add, _testEntity.Key, _testEntity, _testIndex); var update = new Change <Person, string>(ChangeReason.Update, _testEntity.Key, updatedEntity, add.Current, newIndex, _testIndex); var result = ChangesReducer.Reduce(add, update); var expected = new Change <Person, string>(ChangeReason.Add, _testEntity.Key, updatedEntity, newIndex); result.Value.Should().Be(expected); }
public void TwoUpdatesProduceUpdate() { var updatedEntityOne = new Person(_testEntity.Key, 55); var updatedEntityTwo = new Person(_testEntity.Key, 33); var newIndexOne = _testIndex + 1; var newIndexTwo = _testIndex + 2; var firstUpdate = new Change <Person, string>(ChangeReason.Update, _testEntity.Key, updatedEntityOne, _testEntity, newIndexOne, _testIndex); var secondUpdate = new Change <Person, string>(ChangeReason.Update, _testEntity.Key, updatedEntityTwo, updatedEntityOne, newIndexTwo, newIndexOne); var result = ChangesReducer.Reduce(firstUpdate, secondUpdate); var expected = new Change <Person, string>(ChangeReason.Update, _testEntity.Key, updatedEntityTwo, _testEntity, newIndexTwo, _testIndex); result.Value.Should().Be(expected); }
public void RefreshIsBeingOverridenByAnything(Change <Person, string> refresh, Change <Person, string> other) { var result = ChangesReducer.Reduce(refresh, other); result.Value.Should().Be(other); }
public void NoneGetsOverridenByAnything(Change <Person, string> c) { var result = ChangesReducer.Reduce(Optional <Change <Person, string> > .None, c); result.Value.Should().Be(c); }
public void RemoveOverridesAnythingButAdd(Change <Person, string> remove, Change <Person, string> other) { var result = ChangesReducer.Reduce(other, remove); result.Value.Should().Be(remove); }