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
-~----------~----~----~----~------~----~------~--~---

Reply via email to