blob: f5ba733b7fc353e2d1257371a3aaf79f564b3035 [file] [log] [blame]
package org.eclipse.gef.test;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.commands.CommandStack;
import org.eclipse.gef.commands.CommandStackEvent;
import org.eclipse.gef.commands.CommandStackEventListener;
import org.junit.Assert;
import junit.framework.TestCase;
public class CommandStackTest extends TestCase {
public void testCommandStackEventListenerNotifications() {
final List commandStackEvents = new ArrayList();
// capture all notifications in an event list
CommandStack stack = new CommandStack();
stack.addCommandStackEventListener(new CommandStackEventListener() {
public void stackChanged(CommandStackEvent event) {
commandStackEvents.add(event);
}
});
Command c = new Command() {
};
// test execution pre and post events
Assert.assertEquals(0, commandStackEvents.size());
stack.execute(c);
Assert.assertEquals(2, commandStackEvents.size());
Assert.assertEquals(c,
((CommandStackEvent) commandStackEvents.get(0)).getCommand());
Assert.assertTrue(((CommandStackEvent) commandStackEvents.get(0))
.isPreChangeEvent());
Assert.assertFalse(((CommandStackEvent) commandStackEvents.get(0))
.isPostChangeEvent());
Assert.assertEquals(stack,
((CommandStackEvent) commandStackEvents.get(0)).getSource());
Assert.assertEquals(CommandStack.PRE_EXECUTE,
((CommandStackEvent) commandStackEvents.get(0)).getDetail());
Assert.assertNotEquals(0,
((CommandStackEvent) commandStackEvents.get(0)).getDetail()
& CommandStack.PRE_MASK);
Assert.assertEquals(0,
((CommandStackEvent) commandStackEvents.get(0)).getDetail()
& CommandStack.POST_MASK);
Assert.assertEquals(c,
((CommandStackEvent) commandStackEvents.get(1)).getCommand());
Assert.assertFalse(((CommandStackEvent) commandStackEvents.get(1))
.isPreChangeEvent());
Assert.assertTrue(((CommandStackEvent) commandStackEvents.get(1))
.isPostChangeEvent());
Assert.assertEquals(stack,
((CommandStackEvent) commandStackEvents.get(1)).getSource());
Assert.assertEquals(CommandStack.POST_EXECUTE,
((CommandStackEvent) commandStackEvents.get(1)).getDetail());
Assert.assertEquals(0,
((CommandStackEvent) commandStackEvents.get(1)).getDetail()
& CommandStack.PRE_MASK);
Assert.assertNotEquals(0,
((CommandStackEvent) commandStackEvents.get(1)).getDetail()
& CommandStack.POST_MASK);
// // test undo pre and post events
commandStackEvents.clear();
Assert.assertEquals(0, commandStackEvents.size());
stack.undo();
Assert.assertEquals(2, commandStackEvents.size());
Assert.assertEquals(c,
((CommandStackEvent) commandStackEvents.get(0)).getCommand());
Assert.assertTrue(((CommandStackEvent) commandStackEvents.get(0))
.isPreChangeEvent());
Assert.assertFalse(((CommandStackEvent) commandStackEvents.get(0))
.isPostChangeEvent());
Assert.assertEquals(stack,
((CommandStackEvent) commandStackEvents.get(0)).getSource());
Assert.assertEquals(CommandStack.PRE_UNDO,
((CommandStackEvent) commandStackEvents.get(0)).getDetail());
Assert.assertNotEquals(0,
((CommandStackEvent) commandStackEvents.get(0)).getDetail()
& CommandStack.PRE_MASK);
Assert.assertEquals(0,
((CommandStackEvent) commandStackEvents.get(0)).getDetail()
& CommandStack.POST_MASK);
Assert.assertEquals(c,
((CommandStackEvent) commandStackEvents.get(1)).getCommand());
Assert.assertFalse(((CommandStackEvent) commandStackEvents.get(1))
.isPreChangeEvent());
Assert.assertTrue(((CommandStackEvent) commandStackEvents.get(1))
.isPostChangeEvent());
Assert.assertEquals(stack,
((CommandStackEvent) commandStackEvents.get(1)).getSource());
Assert.assertEquals(CommandStack.POST_UNDO,
((CommandStackEvent) commandStackEvents.get(1)).getDetail());
Assert.assertEquals(0,
((CommandStackEvent) commandStackEvents.get(1)).getDetail()
& CommandStack.PRE_MASK);
Assert.assertNotEquals(0,
((CommandStackEvent) commandStackEvents.get(1)).getDetail()
& CommandStack.POST_MASK);
// // test redo pre and post events
commandStackEvents.clear();
Assert.assertEquals(0, commandStackEvents.size());
stack.redo();
Assert.assertEquals(2, commandStackEvents.size());
Assert.assertEquals(c,
((CommandStackEvent) commandStackEvents.get(0)).getCommand());
Assert.assertTrue(((CommandStackEvent) commandStackEvents.get(0))
.isPreChangeEvent());
Assert.assertFalse(((CommandStackEvent) commandStackEvents.get(0))
.isPostChangeEvent());
Assert.assertEquals(stack,
((CommandStackEvent) commandStackEvents.get(0)).getSource());
Assert.assertEquals(CommandStack.PRE_REDO,
((CommandStackEvent) commandStackEvents.get(0)).getDetail());
Assert.assertNotEquals(0,
((CommandStackEvent) commandStackEvents.get(0)).getDetail()
& CommandStack.PRE_MASK);
Assert.assertEquals(0,
((CommandStackEvent) commandStackEvents.get(0)).getDetail()
& CommandStack.POST_MASK);
Assert.assertEquals(c,
((CommandStackEvent) commandStackEvents.get(1)).getCommand());
Assert.assertFalse(((CommandStackEvent) commandStackEvents.get(1))
.isPreChangeEvent());
Assert.assertTrue(((CommandStackEvent) commandStackEvents.get(1))
.isPostChangeEvent());
Assert.assertEquals(stack,
((CommandStackEvent) commandStackEvents.get(1)).getSource());
Assert.assertEquals(CommandStack.POST_REDO,
((CommandStackEvent) commandStackEvents.get(1)).getDetail());
Assert.assertEquals(0,
((CommandStackEvent) commandStackEvents.get(1)).getDetail()
& CommandStack.PRE_MASK);
Assert.assertNotEquals(0,
((CommandStackEvent) commandStackEvents.get(1)).getDetail()
& CommandStack.POST_MASK);
// test flush event
commandStackEvents.clear();
Assert.assertEquals(0, commandStackEvents.size());
stack.flush();
Assert.assertEquals(2, commandStackEvents.size());
Assert.assertEquals(null,
((CommandStackEvent) commandStackEvents.get(0)).getCommand());
Assert.assertTrue(((CommandStackEvent) commandStackEvents.get(0))
.isPreChangeEvent());
Assert.assertFalse(((CommandStackEvent) commandStackEvents.get(0))
.isPostChangeEvent());
Assert.assertEquals(stack,
((CommandStackEvent) commandStackEvents.get(0)).getSource());
// Assert.assertEquals(CommandStack.PRE_FLUSH,
// ((CommandStackEvent) commandStackEvents.get(0)).getDetail());
Assert.assertNotEquals(0,
((CommandStackEvent) commandStackEvents.get(0)).getDetail()
& CommandStack.PRE_MASK);
Assert.assertEquals(0,
((CommandStackEvent) commandStackEvents.get(0)).getDetail()
& CommandStack.POST_MASK);
Assert.assertEquals(null,
((CommandStackEvent) commandStackEvents.get(1)).getCommand());
Assert.assertFalse(((CommandStackEvent) commandStackEvents.get(1))
.isPreChangeEvent());
Assert.assertTrue(((CommandStackEvent) commandStackEvents.get(1))
.isPostChangeEvent());
Assert.assertEquals(stack,
((CommandStackEvent) commandStackEvents.get(1)).getSource());
// Assert.assertEquals(CommandStack.POST_FLUSH,
// ((CommandStackEvent) commandStackEvents.get(1)).getDetail());
Assert.assertEquals(0,
((CommandStackEvent) commandStackEvents.get(1)).getDetail()
& CommandStack.PRE_MASK);
Assert.assertNotEquals(0,
((CommandStackEvent) commandStackEvents.get(1)).getDetail()
& CommandStack.POST_MASK);
// test mark save location event
commandStackEvents.clear();
Assert.assertEquals(0, commandStackEvents.size());
stack.redo();
stack.markSaveLocation();
Assert.assertEquals(2, commandStackEvents.size());
Assert.assertEquals(null,
((CommandStackEvent) commandStackEvents.get(0)).getCommand());
Assert.assertTrue(((CommandStackEvent) commandStackEvents.get(0))
.isPreChangeEvent());
Assert.assertFalse(((CommandStackEvent) commandStackEvents.get(0))
.isPostChangeEvent());
Assert.assertEquals(stack,
((CommandStackEvent) commandStackEvents.get(0)).getSource());
// Assert.assertEquals(CommandStack.PRE_MARK_SAVE,
// ((CommandStackEvent) commandStackEvents.get(0)).getDetail());
Assert.assertNotEquals(0,
((CommandStackEvent) commandStackEvents.get(0)).getDetail()
& CommandStack.PRE_MASK);
Assert.assertEquals(0,
((CommandStackEvent) commandStackEvents.get(0)).getDetail()
& CommandStack.POST_MASK);
Assert.assertEquals(null,
((CommandStackEvent) commandStackEvents.get(1)).getCommand());
Assert.assertFalse(((CommandStackEvent) commandStackEvents.get(1))
.isPreChangeEvent());
Assert.assertTrue(((CommandStackEvent) commandStackEvents.get(1))
.isPostChangeEvent());
Assert.assertEquals(stack,
((CommandStackEvent) commandStackEvents.get(1)).getSource());
// Assert.assertEquals(CommandStack.POST_MARK_SAVE,
// ((CommandStackEvent) commandStackEvents.get(1)).getDetail());
Assert.assertEquals(0,
((CommandStackEvent) commandStackEvents.get(1)).getDetail()
& CommandStack.PRE_MASK);
Assert.assertNotEquals(0,
((CommandStackEvent) commandStackEvents.get(1)).getDetail()
& CommandStack.POST_MASK);
}
}