package taskblocks.modelimpl; import junit.framework.TestCase; public class UndoManagerTest extends TestCase { StringBuilder log = new StringBuilder(); UndoManager um = new UndoManager(); class UA implements UndoAction { String name; UA(String name) {this.name = name;} @Override public String getUndoLabel() {return name;} @Override public String getRedoLabel() {return name;} @Override public void undo() {log.append("u" + name);} @Override public void redo() {log.append("r" + name);} @Override public String toString() { return name; } } public void test1() { um.addAction(new UA("1")); um.addAction(new UA("2")); um.undo(); um.addAction(new UA("3")); assertEquals("u2", log.toString()); assertFalse(um.canRedo()); assertTrue(um.canUndo()); um.undo(); assertEquals("u2u3", log.toString()); assertTrue(um.canUndo()); um.undo(); assertEquals("u2u3u1", log.toString()); assertFalse(um.canUndo()); assertTrue(um.canRedo()); um.redo(); assertEquals("u2u3u1r1", log.toString()); assertTrue(um.canUndo()); assertTrue(um.canRedo()); um.redo(); assertEquals("u2u3u1r1r3", log.toString()); assertTrue(um.canUndo()); assertFalse(um.canRedo()); } }