package greenfoot.collision;

import greenfoot.TestObject;
import greenfoot.TestUtilDelegate;
import greenfoot.World;
import greenfoot.WorldCreator;
import greenfoot.core.Simulation;
import greenfoot.util.GreenfootUtil;

import java.util.List;

import junit.framework.TestCase;


| Tests whether the collision checker works correctly when dealing with sub classes. | | @author Poul Henriksen | public class SubClassTests extends TestCase{ class SuperClass extends TestObject { public SuperClass(int w, int h) { super(w, h); } } class SubClass extends SuperClass { public SubClass(int w, int h) { super(w, h); } } class SubSubClass extends SubClass { public SubSubClass(int w, int h) { super(w, h); } } class IndependentClass extends TestObject { public IndependentClass(int w, int h) { super(w, h); } } @Override protected void setUp() throws Exception { GreenfootUtil.initialise(new TestUtilDelegate()); Simulation.initialize(); } @SuppressWarnings("unchecked") public void testHierarchy() { World world = WorldCreator.createWorld(10, 10, 10); TestObject superObj = new SuperClass(20, 20); world.addObject(superObj, 2, 2); TestObject subObj = new SubClass(10, 10); world.addObject(subObj, 2, 2); TestObject indepObj = new IndependentClass(10, 10); world.addObject(indepObj, 2, 2); List res = indepObj.getIntersectingObjectsP(SuperClass.class); assertEquals(2,res.size()); res = indepObj.getIntersectingObjectsP(SubClass.class); assertEquals(1,res.size()); res = indepObj.getIntersectingObjectsP(SuperClass.class); assertEquals(2,res.size()); } @SuppressWarnings("unchecked") public void testHierarchy2() { World world = WorldCreator.createWorld(10, 10, 10); TestObject superObj = new SuperClass(20, 20); world.addObject(superObj, 2, 2); TestObject subObj = new SubClass(10, 10); world.addObject(subObj, 2, 2); TestObject indepObj = new IndependentClass(10, 10); world.addObject(indepObj, 2, 2); List res = superObj.getIntersectingObjectsP(IndependentClass.class); assertEquals(1,res.size()); res = indepObj.getIntersectingObjectsP(SuperClass.class); assertEquals(2,res.size()); } @SuppressWarnings("unchecked") public void testSubSubClassing() { World world = WorldCreator.createWorld(10, 10, 10); TestObject superObj = new SuperClass(20, 20); world.addObject(superObj, 2, 2); TestObject subSubObj = new SubSubClass(10, 10); world.addObject(subSubObj, 2, 2); TestObject indepObj = new IndependentClass(10, 10); world.addObject(indepObj, 2, 2); List res = superObj.getIntersectingObjectsP(IndependentClass.class); assertEquals(1,res.size()); res = indepObj.getIntersectingObjectsP(SubClass.class); assertEquals(1,res.size()); res = indepObj.getIntersectingObjectsP(SuperClass.class); assertEquals(2,res.size()); } }
top, use, map, class SubClassTests

top, use, map, class SubClassTests . SuperClass

.   SuperClass

top, use, map, class SubClassTests . SuperClass . SubClass

.   SubClass

top, use, map, class SubClassTests . SuperClass . SubClass . SubSubClass

.   SubSubClass

top, use, map, class SubClassTests . SuperClass . SubClass . IndependentClass

.   IndependentClass
.   setUp
.   testHierarchy
.   testHierarchy2
.   testSubSubClassing




133 neLoCode + 2 LoComm