Example #1
0
        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++;
            }
        }
Example #2
0
        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));
        }
Example #3
0
        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++;
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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));
        }