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