Author: allain.lalonde Date: Sun Jul 19 09:01:04 2009 New Revision: 519 Added: piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/event/MockPBasicInputEventHandler.java piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/event/PBasicInputEventListenerTest.java Modified: piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PiccoloAsserts.java
Log: Added tests for PBasicInputEventHandler Modified: piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PiccoloAsserts.java ============================================================================== --- piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PiccoloAsserts.java (original) +++ piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PiccoloAsserts.java Sun Jul 19 09:01:04 2009 @@ -44,7 +44,7 @@ public final class PiccoloAsserts { private PiccoloAsserts() { // Nothing to do - } + } public static final void assertEquals(PBounds expected, PBounds actual, double errorRate) { assertEquals("Expected " + expected + " but was " + actual, expected, actual, errorRate); @@ -57,12 +57,19 @@ Assert.assertEquals(message, expected.getHeight(), actual.getHeight(), errorRate); } - public static void assertEquals(PDimension expected, Dimension2D actual, double errorRate) { + public static void assertEquals(PDimension expected, Dimension2D actual, double errorRate) { assertEquals("Expected " + expected + " but was " + actual, expected, actual, errorRate); } - - public static void assertEquals(String message, PDimension expected, Dimension2D actual, double errorRate) { + + public static void assertEquals(String message, PDimension expected, Dimension2D actual, double errorRate) { Assert.assertEquals(message, expected.getWidth(), actual.getWidth(), errorRate); Assert.assertEquals(message, expected.getHeight(), actual.getHeight(), errorRate); + } + + public static void assertEquals(String[] expected, String[] actual) { + Assert.assertEquals("arrays are not same size", expected.length, actual.length); + for (int i = 0; i < expected.length; i++) { + Assert.assertEquals(expected[i], expected[i]); + } } } Added: piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/event/MockPBasicInputEventHandler.java ============================================================================== --- (empty file) +++ piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/event/MockPBasicInputEventHandler.java Sun Jul 19 09:01:04 2009 @@ -0,0 +1,85 @@ +package edu.umd.cs.piccolo.event; + +import java.util.ArrayList; + +public class MockPBasicInputEventHandler extends PBasicInputEventHandler { + private ArrayList methodCalls = new ArrayList(); + + public String[] getMethodCalls() { + String[] result = new String[methodCalls.size()]; + for (int i=0; i<methodCalls.size(); i++) { + result[i] = (String)methodCalls.get(i); + } + return result; + } + + public void keyboardFocusGained(PInputEvent event) { + methodCalls.add("keyboardFocusGained"); + super.keyboardFocusGained(event); + } + + public void keyboardFocusLost(PInputEvent event) { + methodCalls.add("keyboardFocusLost"); + super.keyboardFocusLost(event); + } + + public void keyPressed(PInputEvent event) { + methodCalls.add("keyPressed"); + super.keyPressed(event); + } + + public void keyReleased(PInputEvent event) { + methodCalls.add("keyReleased"); + super.keyReleased(event); + } + + public void keyTyped(PInputEvent event) { + methodCalls.add("keyTyped"); + super.keyTyped(event); + } + + public void mouseClicked(PInputEvent event) { + methodCalls.add("mouseClicked"); + super.mouseClicked(event); + } + + public void mouseDragged(PInputEvent event) { + methodCalls.add("mouseDragged"); + super.mouseDragged(event); + } + + public void mouseEntered(PInputEvent event) { + methodCalls.add("mouseEntered"); + super.mouseEntered(event); + } + + public void mouseExited(PInputEvent event) { + methodCalls.add("mouseExited"); + super.mouseExited(event); + } + + public void mouseMoved(PInputEvent event) { + methodCalls.add("mouseMoved"); + super.mouseMoved(event); + } + + public void mousePressed(PInputEvent event) { + methodCalls.add("mousePressed"); + super.mousePressed(event); + } + + public void mouseReleased(PInputEvent event) { + methodCalls.add("mouseReleased"); + super.mouseReleased(event); + } + + public void mouseWheelRotated(PInputEvent event) { + methodCalls.add("mouseReleased"); + super.mouseWheelRotated(event); + } + + public void mouseWheelRotatedByBlock(PInputEvent event) { + methodCalls.add("mouseWheelRotatedByBlock"); + super.mouseWheelRotatedByBlock(event); + } +} Added: piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/event/PBasicInputEventListenerTest.java ============================================================================== --- (empty file) +++ piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/event/PBasicInputEventListenerTest.java Sun Jul 19 09:01:04 2009 @@ -0,0 +1,60 @@ +package edu.umd.cs.piccolo.event; + +import java.awt.event.FocusEvent; +import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; +import java.awt.event.MouseWheelEvent; + +import junit.framework.TestCase; +import edu.umd.cs.piccolo.PCanvas; +import edu.umd.cs.piccolo.PiccoloAsserts; + +public class PBasicInputEventListenerTest extends TestCase { + private PBasicInputEventHandler listener; + private MockPBasicInputEventHandler mockListener; + + public void setUp() { + listener = new PBasicInputEventHandler(); + } + + public void testSetEventFilterIsPersisted() { + PInputEventFilter filter = new PInputEventFilter(); + listener.setEventFilter(filter); + assertSame(filter, listener.getEventFilter()); + } + + public void testAcceptsEventDelegatesToFilter() { + PInputEventFilter filter = new PInputEventFilter(); + listener.setEventFilter(filter); + PInputEvent event = buildInputEvent(); + assertTrue(listener.acceptsEvent(event, MouseEvent.MOUSE_CLICKED)); + filter.rejectAllEventTypes(); + assertFalse(listener.acceptsEvent(event, MouseEvent.MOUSE_CLICKED)); + } + + public void testProcessEventDelegatesToSubClassMethodsBasedOnType() { + PInputEvent event = buildInputEvent(); + + mockListener = new MockPBasicInputEventHandler(); + int[] eventTypes = new int[] { KeyEvent.KEY_PRESSED, KeyEvent.KEY_RELEASED, KeyEvent.KEY_TYPED, + MouseEvent.MOUSE_RELEASED, MouseEvent.MOUSE_CLICKED, MouseEvent.MOUSE_DRAGGED, + MouseEvent.MOUSE_ENTERED, MouseEvent.MOUSE_EXITED, MouseEvent.MOUSE_MOVED, MouseEvent.MOUSE_PRESSED, + MouseWheelEvent.WHEEL_UNIT_SCROLL, MouseWheelEvent.WHEEL_BLOCK_SCROLL, FocusEvent.FOCUS_GAINED, FocusEvent.FOCUS_LOST }; + + for (int i = 0; i < eventTypes.length; i++) { + mockListener.processEvent(event, eventTypes[i]); + } + + PiccoloAsserts.assertEquals(new String[] { "keyPressed", "keyReleased", "keyTyped", "mouseReleased", + "mouseClicked", "mouseDragged", "mouseEntered", "mouseExited", "mouseMoved", "mousePressed", + "mouseWheelRotated", "mouseWheelRotatedByBlock", "focusGained", "focusLost" }, mockListener.getMethodCalls()); + } + + private PInputEvent buildInputEvent() { + PCanvas canvas = new PCanvas(); + MouseEvent mouseEvent = new MouseEvent(canvas, 1, System.currentTimeMillis(), 0, 0, 0, 1, false); + PInputEvent event = new PInputEvent(canvas.getRoot().getDefaultInputManager(), mouseEvent, canvas.getCamera()); + return event; + } + +} --~--~---------~--~----~------------~-------~--~----~ Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en -~----------~----~----~----~------~----~------~--~---