package com.jenjinstudios.world.client; import com.jenjinstudios.world.Actor; import com.jenjinstudios.world.World; import com.jenjinstudios.world.math.Angle; import com.jenjinstudios.world.math.Vector2D; import com.jenjinstudios.world.util.ActorUtils; import com.jenjinstudios.world.util.WorldUtils; import org.testng.Assert; import org.testng.annotations.Test; /** * @author Caleb Brinkman */ public class ClientPlayerTest { @Test(timeOut = 5000) public void testSetAngle() { World world = WorldUtils.createDefaultWorld(); Actor player = new Actor("ClientActor"); world.getWorldObjects().add(player); world.update(); Angle angle = new Angle(Angle.LEFT, Angle.FRONT); player.setAngle(angle); world.update(); Assert.assertEquals(player.getAngle(), angle); } @Test(timeOut = 5000) public void testSetAngleToForcedPosition() { World world = WorldUtils.createDefaultWorld(); Actor player = new Actor("ClientActor"); world.getWorldObjects().add(player); world.update(); ActorUtils.forceIdle(player); Angle angle = player.getAngle(); player.setAngle(angle); Assert.assertEquals(player.getAngle(), angle); } @Test(timeOut = 5000) public void testForcePosition() { World world = WorldUtils.createDefaultWorld(); Actor player = new Actor("ClientActor"); player.setId(0); world.getWorldObjects().add(player); world.update(); ActorUtils.forceIdle(player); Assert.assertNotNull(player.getForcedState()); } @Test(timeOut = 5000) public void testStep() throws InterruptedException { World world = WorldUtils.createDefaultWorld(); Actor player = new Actor("ClientActor"); world.getWorldObjects().add(player); world.update(); Angle angle = new Angle(0, Angle.FRONT); player.setAngle(angle); world.update(); long l = System.currentTimeMillis(); waitOneSecond(); l = System.currentTimeMillis() - l; world.update(); double distance = Vector2D.ORIGIN.getDistanceToVector(player.getVector2D()); double expectedDistance = player.getMoveSpeed() * ((double) l / 1000); Assert.assertEquals(distance, expectedDistance, expectedDistance * 0.1); } private void waitOneSecond() throws InterruptedException { long startTime = System.currentTimeMillis(); while (System.currentTimeMillis() - startTime < 1000) Thread.sleep(1); } }