Beispiel #1
0
        public void RemoveFromTimelineWhileDeletedBeforeMark()
        {
            var timeline = new Timeline(BuildStorageOfType);

            timeline.Mark();

            var obj = timeline.AddToTimeline(BuildObject);

            timeline.Mark();

            timeline.RemoveFromTimeline(obj.HistoryId);
            Assert.DoesNotThrow(() => timeline.RemoveFromTimeline(obj.HistoryId));
        }
Beispiel #2
0
        public void MarkClearsForwardHistory()
        {
            var timeline  = new Timeline(BuildStorageOfType);
            var firstMark = timeline.Mark();

            var obj = timeline.AddToTimeline(BuildObject);

            timeline.Mark();

            timeline.RemoveFromTimeline(obj.HistoryId);
            var thirdMark = timeline.Mark();

            timeline.RollBackTo(firstMark);
            Assert.IsTrue(timeline.HasObjectEverExisted(obj.HistoryId));
            Assert.IsFalse(timeline.DoesObjectExistCurrently(obj.HistoryId));

            timeline.AddToTimeline(BuildObject);
            timeline.Mark();

            Assert.IsFalse(timeline.HasObjectEverExisted(obj.HistoryId));
            Assert.IsFalse(timeline.DoesObjectExistCurrently(obj.HistoryId));

            timeline.RollForwardTo(thirdMark);
            Assert.IsFalse(timeline.HasObjectEverExisted(obj.HistoryId));
            Assert.IsFalse(timeline.DoesObjectExistCurrently(obj.HistoryId));
        }
Beispiel #3
0
        public void RollBackFromDeath()
        {
            var timeline = new Timeline(BuildStorageOfType);

            timeline.Mark();

            var obj = timeline.AddToTimeline(BuildObject);

            timeline.Mark();

            int maximumValue = 10;

            obj.SomeValue = maximumValue;
            for (int i = 0; i < maximumValue; i++)
            {
                obj.LotsOfValues.Add(i);
            }

            var changeMarker = timeline.Mark();

            timeline.RemoveFromTimeline(obj.HistoryId);
            timeline.Mark();

            Assert.IsTrue(timeline.HasObjectEverExisted(obj.HistoryId));
            Assert.IsFalse(timeline.DoesObjectExistCurrently(obj.HistoryId));

            timeline.RollBackTo(changeMarker);
            var restoredObj = timeline.IdToObject <MockHistoryObject>(obj.HistoryId);

            Assert.IsNotNull(restoredObj);
            Assert.AreNotSame(obj, restoredObj);
            Assert.AreEqual(obj.HistoryId, restoredObj.HistoryId);
            Assert.AreEqual(maximumValue, restoredObj.SomeValue);
            Assert.AreEqual(maximumValue, restoredObj.LotsOfValues.Count);
        }
Beispiel #4
0
        public void RemoveFromTimelineWithUnknownId()
        {
            var timeline = new Timeline(BuildStorageOfType);

            timeline.Mark();

            Assert.DoesNotThrow(() => timeline.RemoveFromTimeline(new HistoryId()));
        }
Beispiel #5
0
        public void DeleteFromTimelineAtSameTimeAsCreation()
        {
            var timeline = new Timeline(BuildStorageOfType);

            timeline.Mark();

            var obj = timeline.AddToTimeline <MockHistoryObject>(BuildObject);

            timeline.RemoveFromTimeline(obj.HistoryId);

            Assert.IsFalse(timeline.HasObjectEverExisted(obj.HistoryId));
            Assert.IsFalse(timeline.DoesObjectExistCurrently(obj.HistoryId));
        }
Beispiel #6
0
        public void RemoveFromTimelineBeforeMark()
        {
            var timeline = new Timeline(BuildStorageOfType);

            timeline.Mark();

            var obj = timeline.AddToTimeline(BuildObject);

            timeline.Mark();

            timeline.RemoveFromTimeline(obj.HistoryId);

            Assert.IsTrue(timeline.HasObjectEverExisted(obj.HistoryId));
            Assert.IsFalse(timeline.DoesObjectExistCurrently(obj.HistoryId));
        }