diff --git a/test/history_test.html b/test/history_test.html index 1b73a1a5..9e35611f 100644 --- a/test/history_test.html +++ b/test/history_test.html @@ -242,6 +242,61 @@ tearDown(); }); + test('Test UndoManager.undo() and redo() functions', function() { + expect(10); + + setUp(); + + var lastCalled = null; + var cmd1 = new MockCommand(); + var cmd2 = new MockCommand(); + var cmd3 = new MockCommand(); + cmd1.apply = function() { lastCalled = 'cmd1.apply'; }; + cmd2.apply = function() { lastCalled = 'cmd2.apply'; }; + cmd3.apply = function() { lastCalled = 'cmd3.apply'; }; + cmd1.unapply = function() { lastCalled = 'cmd1.unapply'; }; + cmd2.unapply = function() { lastCalled = 'cmd2.unapply'; }; + cmd3.unapply = function() { lastCalled = 'cmd3.unapply'; }; + + undoMgr.addCommandToHistory(cmd1); + undoMgr.addCommandToHistory(cmd2); + undoMgr.addCommandToHistory(cmd3); + + ok(!lastCalled); + + undoMgr.undo(); + equals(lastCalled, 'cmd3.unapply'); + + undoMgr.redo(); + equals(lastCalled, 'cmd3.apply'); + + undoMgr.undo(); + undoMgr.undo(); + equals(lastCalled, 'cmd2.unapply'); + + undoMgr.undo(); + equals(lastCalled, 'cmd1.unapply'); + lastCalled = null; + + undoMgr.undo(); + ok(!lastCalled); + + undoMgr.redo(); + equals(lastCalled, 'cmd1.apply'); + + undoMgr.redo(); + equals(lastCalled, 'cmd2.apply'); + + undoMgr.redo(); + equals(lastCalled, 'cmd3.apply'); + lastCalled = null; + + undoMgr.redo(); + ok(!lastCalled); + + tearDown(); + }); + });