public void RollBackThroughRemove() { var objects = new Dictionary <HistoryId, MockHistoryObject>(); Func <HistoryId, MockHistoryObject> lookupFunc = id => objects[id]; var storage = new HistoryObjectDictionaryHistory <int, MockHistoryObject>(lookupFunc); int maximumValue = 10; for (int i = 0; i < maximumValue; i++) { var obj = new MockHistoryObject(i); objects.Add(obj.HistoryId, obj); storage.Add(i, obj); } storage.StoreCurrent(new TimeMarker(1)); storage.Remove(5); storage.StoreCurrent(new TimeMarker(2)); storage.RollBackTo(new TimeMarker(1)); Assert.AreEqual(maximumValue, storage.Count); int index = 0; foreach (var pair in storage) { Assert.AreEqual(index, pair.Key); Assert.AreSame(objects[new HistoryId(index)], pair.Value); index++; } }
public void RemoveWithUnknownKey() { var objects = new Dictionary <HistoryId, MockHistoryObject>(); Func <HistoryId, MockHistoryObject> lookupFunc = id => objects[id]; var storage = new HistoryObjectDictionaryHistory <int, MockHistoryObject>(lookupFunc); int key = 5; var value = new MockHistoryObject(10); objects.Add(value.HistoryId, value); storage.Add(key, value); Assert.IsFalse(storage.Remove(6)); }
public void RemoveVoidsForwardStack() { var objects = new Dictionary <HistoryId, MockHistoryObject>(); Func <HistoryId, MockHistoryObject> lookupFunc = id => objects[id]; var storage = new HistoryObjectDictionaryHistory <int, MockHistoryObject>(lookupFunc); int maximumValue = 10; for (int i = 0; i < maximumValue; i++) { var obj = new MockHistoryObject(i); objects.Add(obj.HistoryId, obj); storage.Add(i, obj); } storage.StoreCurrent(new TimeMarker(1)); var otherObj = new MockHistoryObject(maximumValue + 1); objects.Add(otherObj.HistoryId, otherObj); storage[5] = otherObj; storage.StoreCurrent(new TimeMarker(2)); storage.RollBackTo(new TimeMarker(1)); storage.Remove(5); storage.StoreCurrent(new TimeMarker(3)); storage.RollForwardTo(new TimeMarker(2)); Assert.AreEqual(maximumValue - 1, storage.Count); int index = 0; foreach (var pair in storage) { if (index < 5) { Assert.AreEqual(index, pair.Key); Assert.AreSame(objects[new HistoryId(index)], pair.Value); } else { Assert.AreEqual(index + 1, pair.Key); Assert.AreSame(objects[new HistoryId(index + 1)], pair.Value); } index++; } }
public void RemoveWithNullKey() { var objects = new Dictionary <HistoryId, MockHistoryObject>(); Func <HistoryId, MockHistoryObject> lookupFunc = id => objects[id]; var storage = new HistoryObjectDictionaryHistory <string, MockHistoryObject>(lookupFunc); bool result = true; Assert.DoesNotThrow( () => { result = storage.Remove(null); }); Assert.IsFalse(result); }
public void Remove() { var objects = new Dictionary <HistoryId, MockHistoryObject>(); Func <HistoryId, MockHistoryObject> lookupFunc = id => objects[id]; var storage = new HistoryObjectDictionaryHistory <int, MockHistoryObject>(lookupFunc); int key = 5; var value = new MockHistoryObject(10); objects.Add(value.HistoryId, value); storage.Add(key, value); var result = storage.Remove(key); Assert.IsTrue(result); Assert.AreEqual(0, storage.Count); Assert.IsFalse(storage.ContainsKey(key)); }