Ejemplo n.º 1
0
        static void TestListUndoRedo()
        {
            DocList <DocObj <int> > testDoc = new DocList <DocObj <int> >();

            History.Instance.Root = testDoc;

            History.Instance.ExecuteInTransaction(delegate()
            {
                testDoc.Add(new DocObj <int>(1));
                UnitTest.Test(testDoc.Count == 1);
                testDoc.Add(new DocObj <int>(2));
                UnitTest.Test(testDoc.Count == 2);
                testDoc.Add(new DocObj <int>(3));
                UnitTest.Test(testDoc.Count == 3);
            }, History.Instance.NextFreeTransactionId(), "Dummy");

            UnitTest.Test(testDoc[0].Value == 1);
            UnitTest.Test(testDoc[1].Value == 2);
            UnitTest.Test(testDoc[2].Value == 3);

            History.Instance.Undo();
            UnitTest.Test(testDoc.Count == 0);

            History.Instance.Redo();
            UnitTest.Test(testDoc.Count == 3);
            UnitTest.Test(testDoc[0].Value == 1);
            UnitTest.Test(testDoc[1].Value == 2);
            UnitTest.Test(testDoc[2].Value == 3);

            testDoc.RemoveAt(0);
            UnitTest.Test(testDoc.Count == 2);
            UnitTest.Test(testDoc[0].Value == 2);
            UnitTest.Test(testDoc[1].Value == 3);

            testDoc.Clear();
            UnitTest.Test(testDoc.Count == 0);
        }