package greenfoot.collision;
import java.util.List;
import greenfoot.GreenfootImage;
import greenfoot.TestObject;
import greenfoot.TestUtilDelegate;
import greenfoot.World;
import greenfoot.WorldCreator;
import greenfoot.core.Simulation;
import greenfoot.util.GreenfootUtil;
import junit.framework.TestCase;
public class GetAtTest
extends TestCase{
private World world;
@Override
protected void setUp()
throws Exception
{
GreenfootUtil.initialise(new TestUtilDelegate());
Simulation.initialize();
}
public void testPixelOdd()
{
world = WorldCreator.createWorld(100, 100, 1);
TestObject actor1 = new TestObject(21, 21);
world.addObject(actor1, 50 , 50);
List<TestObject> result = world.getObjectsAt(50, 50, TestObject.class);
assertTrue(result.contains(actor1));
result = world.getObjectsAt(60, 60, TestObject.class);
assertTrue(result.contains(actor1));
result = world.getObjectsAt(40, 40, TestObject.class);
assertTrue(result.contains(actor1));
result = world.getObjectsAt(39, 39, TestObject.class);
assertFalse(result.contains(actor1));
result = world.getObjectsAt(61, 61, TestObject.class);
assertFalse(result.contains(actor1));
}
public void testPixelEven()
{
world = WorldCreator.createWorld(100, 100, 1);
TestObject actor1 = new TestObject(20, 20);
world.addObject(actor1, 50, 50);
List<TestObject> result = world.getObjectsAt(50, 50, TestObject.class);
assertTrue(result.contains(actor1));
result = world.getObjectsAt(59, 59, TestObject.class);
assertTrue(result.contains(actor1));
result = world.getObjectsAt(40, 40, TestObject.class);
assertTrue(result.contains(actor1));
result = world.getObjectsAt(39, 39, TestObject.class);
assertFalse(result.contains(actor1));
result = world.getObjectsAt(60, 60, TestObject.class);
assertFalse(result.contains(actor1));
}
| Test that collision checking works when an actor is rotated.
|
public void testRotation()
{
world = WorldCreator.createWorld(100, 100, 1);
TestObject actor1 = new TestObject(40, 20);
world.addObject(actor1, 50, 50);
List<TestObject> result = world.getObjectsAt(30, 40, TestObject.class);
assertTrue(result.contains(actor1));
result = world.getObjectsAt(69, 59, TestObject.class);
assertTrue(result.contains(actor1));
actor1.setRotation(90);
result = world.getObjectsAt(42, 32, TestObject.class);
assertTrue(result.contains(actor1));
result = world.getObjectsAt(57, 67, TestObject.class);
assertTrue(result.contains(actor1));
}
| Test that the collision checker can handle rotated actors.
|
public void testRotation2()
{
world = WorldCreator.createWorld(10, 10, 50);
TestObject actor1 = new TestObject(50, 50);
world.addObject(actor1, 0, 0);
TestObject actor2 = new TestObject(50, 50);
world.addObject(actor2, 5, 0);
actor2.setRotation(45);
List<TestObject> result = world.getObjectsAt(5, 0, TestObject.class);
assertTrue(result.contains(actor2));
result = world.getObjectsAt(6, 0, TestObject.class);
assertFalse(result.contains(actor2));
result = world.getObjectsAt(5, 1, TestObject.class);
assertFalse(result.contains(actor2));
result = world.getObjectsAt(4, 0, TestObject.class);
assertFalse(result.contains(actor2));
}
| Test that the collision checker can handle rotated actors.
|
public void testRotation3()
{
world = WorldCreator.createWorld(10, 10, 50);
TestObject actor1 = new TestObject(50, 50);
world.addObject(actor1, 0, 0);
TestObject actor2 = new TestObject(50, 50);
actor2.setRotation(45);
world.addObject(actor2, 5, 0);
List<TestObject> result = world.getObjectsAt(5, 0, TestObject.class);
assertTrue(result.contains(actor2));
result = world.getObjectsAt(6, 0, TestObject.class);
assertFalse(result.contains(actor2));
result = world.getObjectsAt(5, 1, TestObject.class);
assertFalse(result.contains(actor2));
result = world.getObjectsAt(4, 0, TestObject.class);
assertFalse(result.contains(actor2));
}
public void testBigCells()
{
world = WorldCreator.createWorld(10, 10, 50);
TestObject actor1 = new TestObject(50, 50);
world.addObject(actor1, 1, 1);
List<TestObject> result = world.getObjectsAt(1, 1, TestObject.class);
assertTrue(result.contains(actor1));
result = world.getObjectsAt(0, 0, TestObject.class);
assertFalse(result.contains(actor1));
result = world.getObjectsAt(0, 1, TestObject.class);
assertFalse(result.contains(actor1));
result = world.getObjectsAt(1, 0, TestObject.class);
assertFalse(result.contains(actor1));
result = world.getObjectsAt(2, 2, TestObject.class);
assertFalse(result.contains(actor1));
result = world.getObjectsAt(1, 2, TestObject.class);
assertFalse(result.contains(actor1));
result = world.getObjectsAt(2, 1, TestObject.class);
assertFalse(result.contains(actor1));
}
public void testMovement()
{
world = WorldCreator.createWorld(10, 10, 50);
TestObject actor1 = new TestObject(8,8);
TestObject actor2 = new TestObject(8,8);
TestObject actor3 = new TestObject(8,8);
TestObject actor4 = new TestObject(8,8);
world.addObject(actor1, 0, 0);
world.addObject(actor2, 9, 0);
world.addObject(actor3, 0, 9);
world.addObject(actor4, 9, 9);
assertSame(actor1.getOneObjectAtP(9, 0, TestObject.class), actor2);
assertSame(actor1.getOneObjectAtP(0, 9, TestObject.class), actor3);
assertSame(actor1.getOneObjectAtP(9, 9, TestObject.class), actor4);
assertSame(actor2.getOneObjectAtP(-9, 0, TestObject.class), actor1);
actor1.setLocation(1, 1);
actor4.setLocation(8, 8);
assertSame(actor1.getOneObjectAtP(8, -1, TestObject.class), actor2);
assertSame(actor1.getOneObjectAtP(-1, 8, TestObject.class), actor3);
assertSame(actor1.getOneObjectAtP(7, 7, TestObject.class), actor4);
assertSame(actor2.getOneObjectAtP(-8, 1, TestObject.class), actor1);
world.removeObjects(world.getObjects(null));
world.addObject(actor1, 0, 0);
world.addObject(actor2, 9, 0);
world.addObject(actor3, 0, 9);
world.addObject(actor4, 9, 9);
assertSame(actor1.getOneObjectAtP(9, 0, TestObject.class), actor2);
assertSame(actor1.getOneObjectAtP(0, 9, TestObject.class), actor3);
assertSame(actor1.getOneObjectAtP(9, 9, TestObject.class), actor4);
assertSame(actor2.getOneObjectAtP(-9, 0, TestObject.class), actor1);
}
public void testResize()
{
class BadLeaf
extends TestObject {
public BadLeaf()
{
super(512, 433);
}
@Override
protected void addedToWorld(World world)
{
GreenfootImage myImage = getImage();
myImage.scale(60, 60);
setImage(new GreenfootImage(60, 60));
getOneObjectAtOffset(0, 0, TestObject.class);
}
};
world = WorldCreator.createWorld(10, 10, 60);
TestObject wombat = new TestObject(58, 45);
world.addObject(wombat, 4, 7);
world.addObject(new BadLeaf(), 3, 5);
world.addObject(new BadLeaf(), 2, 9);
assertNull(wombat.getOneObjectAtP(1, 0, TestObject.class));
}
}
top,
use,
map,
class GetAtTest
. setUp
. testPixelOdd
. testPixelEven
. testRotation
. testRotation2
. testRotation3
. testBigCells
. testMovement
. testResize
top,
use,
map,
class GetAtTest . BadLeaf
. BadLeaf
. addedToWorld
261 neLoCode
+ 3 LoComm