private static void TestClear(List <int> comparisonList, UndoableList <int> undoList) { TestEquals(comparisonList, undoList); undoList.Clear(); Debug.Assert(undoList.Undo()); TestEquals(comparisonList, undoList); }
public static void Test() { int count = 10; List <int> comparisonList = new List <int>(count); UndoableList <int> undoList = new UndoableList <int>(count); PopulateLists(comparisonList, undoList, count); TestAdd(comparisonList, undoList); TestClear(comparisonList, undoList); TestInsert(comparisonList, undoList); TestInsertRange(comparisonList, undoList); TestRemove(comparisonList, undoList); TestRemoveAt(comparisonList, undoList); TestRemoveRange(comparisonList, undoList); TestReverse(comparisonList, undoList); }
private static void TestRemoveAt(List <int> comparisonList, UndoableList <int> undoList) { TestEquals(comparisonList, undoList); int index = comparisonList.Count / 2; int item = comparisonList[index]; comparisonList.RemoveAt(index); undoList.RemoveAt(index); TestEquals(comparisonList, undoList); comparisonList.Insert(index, item); Debug.Assert(undoList.Undo()); TestEquals(comparisonList, undoList); }
private static void TestRemoveRange(List <int> comparisonList, UndoableList <int> undoList) { TestEquals(comparisonList, undoList); int index = comparisonList.Count / 2; int count = comparisonList.Count - index; List <int> range = comparisonList.GetRange(index, count); comparisonList.RemoveRange(index, count); undoList.RemoveRange(index, count); TestEquals(comparisonList, undoList); comparisonList.InsertRange(index, range); Debug.Assert(undoList.Undo()); TestEquals(comparisonList, undoList); }
private static void TestAdd(List <int> comparisonList, UndoableList <int> undoList) { TestEquals(comparisonList, undoList); Stack <int> redoStack = new Stack <int>(); while (comparisonList.Count > 0) { redoStack.Push(comparisonList[comparisonList.Count - 1]); comparisonList.RemoveAt(comparisonList.Count - 1); Debug.Assert(undoList.Undo()); TestEquals(comparisonList, undoList); } while (redoStack.Count > 0) { comparisonList.Add(redoStack.Pop()); Debug.Assert(undoList.Redo()); TestEquals(comparisonList, undoList); } }
private static void TestInsertRange(List <int> comparisonList, UndoableList <int> undoList) { TestEquals(comparisonList, undoList); int[] range = { 1, 2, 3, 4, 5 }; int index = comparisonList.Count / 2; comparisonList.InsertRange(index, range); undoList.InsertRange(index, range); TestEquals(comparisonList, undoList); comparisonList.RemoveRange(index, range.Length); Debug.Assert(undoList.Undo()); TestEquals(comparisonList, undoList); comparisonList.InsertRange(index, range); Debug.Assert(undoList.Redo()); TestEquals(comparisonList, undoList); }
private static void TestReverse(List <int> comparisonList, UndoableList <int> undoList) { TestEquals(comparisonList, undoList); comparisonList.Reverse(); undoList.Reverse(); TestEquals(comparisonList, undoList); comparisonList.Reverse(); Debug.Assert(undoList.Undo()); TestEquals(comparisonList, undoList); comparisonList.Reverse(); Debug.Assert(undoList.Redo()); TestEquals(comparisonList, undoList); int count = comparisonList.Count / 2; comparisonList.Reverse(0, count); undoList.Reverse(0, count); TestEquals(comparisonList, undoList); comparisonList.Reverse(0, count); Debug.Assert(undoList.Undo()); TestEquals(comparisonList, undoList); comparisonList.Reverse(0, count); Debug.Assert(undoList.Redo()); TestEquals(comparisonList, undoList); }