public void ValidUndoStatesAfterRedo() { var redoSensor = new Sensor("Temperature", "C"); var correctStackItem = new SensorState(redoSensor, new DateTime(2011, 7, 5, 22, 47, 0), new Dictionary<DateTime, float> { { new DateTime(2010, 5, 5, 22, 00, 0), 22.5f }, { new DateTime(2010, 5, 5, 22, 15, 0), 21.4f }, { new DateTime(2010, 5, 5, 22, 30, 0), 22.0f } }, null); var correctStackItemTwo = new SensorState(redoSensor, new DateTime(2011, 7, 9, 22, 47, 0), new Dictionary<DateTime, float> { { new DateTime(2010, 5, 5, 22, 00, 0), 22.5f }, { new DateTime(2010, 5, 5, 22, 15, 0), 21.4f }, { new DateTime(2010, 5, 5, 22, 30, 0), 22.0f } }, null); redoSensor.AddState(correctStackItem); redoSensor.AddState(correctStackItemTwo); redoSensor.Undo(); Assert.AreEqual(correctStackItem, redoSensor.CurrentState); redoSensor.Redo(); Assert.AreEqual(1, redoSensor.UndoStates.Count); }
public void UndoToParticularState() { var s = new Sensor("Temperature", "C"); var baseDate = new DateTime(2011, 7, 7, 12, 15, 0); s.AddState(new SensorState(s, baseDate)); s.AddState(new SensorState(s, baseDate.AddMinutes(15))); s.AddState(new SensorState(s, baseDate.AddMinutes(30))); s.AddState(new SensorState(s, baseDate.AddMinutes(45))); s.AddState(new SensorState(s, baseDate.AddMinutes(60))); s.AddState(new SensorState(s, baseDate.AddMinutes(75))); s.AddState(new SensorState(s, baseDate.AddMinutes(90))); s.AddState(new SensorState(s, baseDate.AddMinutes(105))); s.Undo(baseDate.AddMinutes(75)); Assert.AreEqual(2, s.RedoStates.Count); Assert.AreEqual(baseDate.AddMinutes(90), s.RedoStates[0].EditTimestamp); Assert.AreEqual(baseDate.AddMinutes(105), s.RedoStates[1].EditTimestamp); }
public void ValidUndoStatesAfterMultilevelRedo() { _undoSensor = new Sensor("Temperature", "C"); var correctStack = new Stack<SensorState>(); correctStack.Push(new SensorState(_undoSensor, new DateTime(2011, 8, 12), new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null)); correctStack.Push(new SensorState(_undoSensor, new DateTime(2011, 8, 11), new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null)); correctStack.Push(new SensorState(_undoSensor, new DateTime(2011, 8, 12), new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 64.77f } }, null)); _undoSensor.AddState(new SensorState(_undoSensor, new DateTime(2011, 8, 11), new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null)); _undoSensor.AddState(new SensorState(_undoSensor, new DateTime(2011, 8, 12), new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 66.77f } }, null)); _undoSensor.AddState(new SensorState(_undoSensor, new DateTime(2011, 8, 12), new Dictionary<DateTime, float> { { new DateTime(2011, 8, 12), 64.77f } }, null)); _undoSensor.Undo(); _undoSensor.Undo(); Assert.AreEqual(2, _undoSensor.RedoStates.Count); Assert.AreEqual(0, _undoSensor.UndoStates.Count); _undoSensor.Redo(); _undoSensor.Redo(); Assert.AreEqual(0, _undoSensor.RedoStates.Count); Assert.AreEqual(2, _undoSensor.UndoStates.Count); }
//[Test] Limit no longer applied as we don't save the undo/redo stack public void UndoRedoStackMaximumFiveEntries() { var s = new Sensor("Temperature", "C"); s.AddState(new SensorState(s, DateTime.Now)); s.AddState(new SensorState(s, DateTime.Now)); s.AddState(new SensorState(s, DateTime.Now)); s.AddState(new SensorState(s, DateTime.Now)); s.AddState(new SensorState(s, DateTime.Now)); s.AddState(new SensorState(s, DateTime.Now)); s.AddState(new SensorState(s, DateTime.Now)); Assert.AreEqual(5, s.UndoStates.Count); Assert.AreEqual(0, s.RedoStates.Count); s.Undo(); s.Undo(); s.Undo(); s.Undo(); // Since the top of the undo stack is the current state, we must have at least one item left on the undo stack... Assert.AreEqual(1, s.UndoStates.Count); // This is the real test Assert.AreEqual(4, s.RedoStates.Count); s.Redo(); s.Redo(); s.Redo(); s.Redo(); Assert.AreEqual(5, s.UndoStates.Count); // This is the real test Assert.AreEqual(0, s.RedoStates.Count); }