Author: allain.lalonde
Date: Mon Jul 13 05:13:41 2009
New Revision: 449

Added:
     
piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PLayerTest.java

Log:
Adding some unit test to PLayer, 98.7% instruction coverage booya.

Added:  
piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PLayerTest.java
==============================================================================
--- (empty file)
+++  
piccolo2d.java/trunk/core/src/test/java/edu/umd/cs/piccolo/PLayerTest.java      
 
Mon Jul 13 05:13:41 2009
@@ -0,0 +1,132 @@
+package edu.umd.cs.piccolo;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import junit.framework.TestCase;
+import edu.umd.cs.piccolo.util.PBounds;
+import edu.umd.cs.piccolo.util.PObjectOutputStream;
+
+public class PLayerTest extends TestCase {
+       private PLayer layer;
+
+       public void setUp() {
+               layer = new PLayer();
+       }
+       
+       public void testLayerHasEmptyCamerasCollectionByDefault() {
+               Collection cameras = layer.getCamerasReference();
+               assertNotNull(cameras);
+               assertTrue(cameras.isEmpty());
+               assertEquals(0, layer.getCameraCount());
+       }
+       
+       public void  
testGetCameraByIndexThrowsIndexOutOfBoundsExceptionWhenOutOfBounds() {
+               PCamera camera = new PCamera();
+               layer.addCamera(camera);
+               try {
+                       layer.getCamera(-1);
+                       fail("Exception should have been thrown");
+               } catch (IndexOutOfBoundsException e) {
+                       // expected;
+               }
+
+               try {
+                       layer.getCamera(1);
+                       fail("Exception should have been thrown");
+               } catch (IndexOutOfBoundsException e) {
+                       // expected;
+               }               
+       }
+
+       public void testGetCameraReturnsCameraAtCorrectIndex() {
+               PCamera camera1 = new PCamera();
+               PCamera camera2 = new PCamera();
+               PCamera camera3 = new PCamera();
+               
+               layer.addCamera(camera1);
+               layer.addCamera(camera2);
+               layer.addCamera(camera3);
+               
+               assertEquals(camera1, layer.getCamera(0));
+               assertEquals(camera2, layer.getCamera(1));
+               assertEquals(camera3, layer.getCamera(2));
+       }
+       
+       public void testAddCameraCorrectlyHandlesIndex() {
+               PCamera camera1 = new PCamera();
+               PCamera camera2 = new PCamera();
+               PCamera camera3 = new PCamera();
+               
+               layer.addCamera(0, camera1);
+               layer.addCamera(0, camera2);
+               layer.addCamera(1, camera3);
+               
+               assertEquals(camera2, layer.getCamera(0));
+               assertEquals(camera3, layer.getCamera(1));
+               assertEquals(camera1, layer.getCamera(2));
+       }
+       
+       public void testRemovingCameraByReferenceWorksWhenCameraIsFound() {
+               PCamera camera = new PCamera();
+               layer.addCamera(camera);
+               layer.removeCamera(camera);
+               assertEquals(0, layer.getCameraCount());
+       }
+       
+       public void testRemovingCameraByIndexWorksWhenIndexIsValid() {
+               PCamera camera = new PCamera();
+               layer.addCamera(camera);
+               layer.removeCamera(0);
+               assertEquals(0, layer.getCameraCount());
+       }
+       
+       // I think PLayer should behave this way. Seems more logical since it's 
 
how
+       // the Java Collection libraries behave
+       /*
+       public void testRemovingCameraNotAttachedToCameraShouldDoNothing() {
+               PCamera strangerCamera = new PCamera();
+               layer.removeCamera(strangerCamera);
+               assertEquals(0, layer.getCameraCount());
+       }*/
+       
+       public void testRepaintFromNotifiesCameras() {
+               MockPCamera camera = new MockPCamera();
+               layer.addCamera(camera);
+               
+               PBounds bounds = new PBounds(0, 0, 100, 100);
+               layer.repaintFrom(bounds, layer);
+               
+               assertEquals(1, camera.notifications.size());
+               
+               MockPCamera.Notification notification =  
(MockPCamera.Notification)camera.notifications.get(0);
+               assertEquals(layer, notification.layer);                
+               assertEquals(bounds, notification.bounds);
+       }               
+       
+       class MockPCamera extends PCamera {
+               class Notification {
+                       PBounds bounds;
+                       //this should really be PLayer
+                       PNode layer;
+                       
+                       Notification(PBounds bounds, PNode layer) {
+                               this.bounds = bounds;
+                               this.layer = layer;
+                       }
+               }
+               
+               List notifications = new ArrayList();
+               
+               public void repaintFromLayer(PBounds bounds, PNode layer) {     
                
+                       notifications.add(new Notification(bounds, layer));
+                       super.repaintFromLayer(bounds, layer);
+               }               
+       }
+}

--~--~---------~--~----~------------~-------~--~----~
Piccolo2D Developers Group: http://groups.google.com/group/piccolo2d-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to