Enemy Factory Test - UQcsse3200/2024-studio-2 GitHub Wiki
class EnemyFactoryTest {
private Entity chicken;
private Entity frog;
private Entity monkey;
private static final NPCConfigs configs =
FileLoader.readClass(NPCConfigs.class, "configs/NPCs.json");
private String[] textures = {
"images/chicken.png",
"images/monkey.png",
"images/frog.png",
};
private String[] atlas = {
"images/chicken.atlas",
"images/monkey.atlas",
"images/frog.atlas"
};
@BeforeEach
void setup() {
GameTime gameTime = mock(GameTime.class);
when(gameTime.getDeltaTime()).thenReturn(0.02f);
ServiceLocator.registerTimeSource(gameTime);
ServiceLocator.registerPhysicsService(new PhysicsService());
RenderService render = new RenderService();
render.setDebug(mock(DebugRenderer.class));
ServiceLocator.registerRenderService(render);
ResourceService resourceService = new ResourceService();
ServiceLocator.registerResourceService(resourceService);
resourceService.loadTextures(textures);
resourceService.loadTextureAtlases(atlas);
resourceService.loadAll();
Entity player = new Entity();
chicken = EnemyFactory.createChicken(player);
frog = EnemyFactory.createFrog(player);
monkey = EnemyFactory.createMonkey(player);
}
/**
* Tests Creation of a monkey.
*/
@Test
void TestMonkeyCreation() {
assertNotNull(monkey, "monkey should not be null.");
}
/**
* Tests that the monkey is an Entity.
*/
@Test
void TestMonkeyIsEntity() {
assertEquals(monkey.getClass(), Entity.class);
}
/**
* Tests that the monkey has the correct components physics component.
*/
@Test
void TestMonkeyHasComponents() {
assertNotNull(monkey.getComponent(PhysicsComponent.class));
assertNotNull(monkey.getComponent(PhysicsMovementComponent.class));
assertNotNull(monkey.getComponent(MonkeyAnimationController.class));
assertNotNull(monkey.getComponent(CombatStatsComponent.class));
assertNotNull(monkey.getComponent(HitboxComponent.class));
assertNotNull(monkey.getComponent(ColliderComponent.class));
}
/**
* Tests that the monkey has the correct stats.
*/
@Test
void TestMonkeyStats() {
assertEquals(1, monkey.getComponent(CombatStatsComponent.class).getHealth(),
"Cow should have 1 HP.");
assertEquals(0,
monkey.getComponent(CombatStatsComponent.class).getSpeed(),
"monkey should have 0 Base Attack.");
}
/**
* Tests that the monkey has correct animations.
*/
@Test
void TestMonkeyAnimation() {
assertTrue(monkey.getComponent(AnimationRenderComponent.class).hasAnimation("run_down") ,
"Monkey should have run down animation.");
assertTrue(monkey.getComponent(AnimationRenderComponent.class).hasAnimation("run_up") ,
"Monkey should have run up animation.");
assertTrue(monkey.getComponent(AnimationRenderComponent.class).hasAnimation("run_right") ,
"Monkey should have run right animation.");
assertTrue(monkey.getComponent(AnimationRenderComponent.class).hasAnimation("run_down") ,
"Cow should have idle animation.");
assertTrue(monkey.getComponent(AnimationRenderComponent.class).hasAnimation("run_right_down") ,
"Monkey should have run right down animation.");
assertTrue(monkey.getComponent(AnimationRenderComponent.class).hasAnimation("run_left_down") ,
"Monkey should have run left down animation.");
assertTrue(monkey.getComponent(AnimationRenderComponent.class).hasAnimation("run_right_up") ,
"Monkey should have run right up animation.");
assertTrue(monkey.getComponent(AnimationRenderComponent.class).hasAnimation("run_left_up") ,
"Monkey should have run left up animation.");
}
/**
* Tests that the monkey is in the correct spot when placed.
*/
@Test
void TestMonkeySetPosition() {
Vector2 pos = new Vector2(0f, 0f);
monkey.setPosition(pos);
assertEquals(pos, monkey.getPosition());
}
/**
* Tests Creation of a chicken.
*/
@Test
void TestChickenCreation() {
assertNotNull(chicken, "Chicken should not be null.");
}
/**
* Tests that the chicken is an Entity.
*/
@Test
void TestChickenIsEntity() {
assertEquals(chicken.getClass(), Entity.class);
}
/**
* Tests that the chicken has the correct components.
*/
@Test
void TestChickenHasComponents() {
assertNotNull(chicken.getComponent(PhysicsComponent.class));
assertNotNull(chicken.getComponent(PhysicsMovementComponent.class));
assertNotNull(chicken.getComponent(ChickenAnimationController.class));
assertNotNull(chicken.getComponent(CombatStatsComponent.class));
assertNotNull(chicken.getComponent(HitboxComponent.class));
assertNotNull(chicken.getComponent(ColliderComponent.class));
}
/**
* Tests that the chicken has the correct stats.
*/
@Test
void TestChickenStats() {
assertEquals(1, chicken.getComponent(CombatStatsComponent.class).getHealth(),
"chicken should have 1 HP.");
assertEquals(0,
chicken.getComponent(CombatStatsComponent.class).getSpeed(),
"chicken should have 0 speed.");
}
/**
* Tests that the chicken has correct animations.
*/
@Test
void TestChickenAnimation() {
assertTrue(chicken.getComponent(AnimationRenderComponent.class).hasAnimation("walk") ,
"Chicken should have walk animation.");
assertTrue(chicken.getComponent(AnimationRenderComponent.class).hasAnimation("spawn") ,
"Chicken should have spawn animation.");
}
/**
* Tests that the chicken is in the correct spot when placed.
*/
@Test
void TestChickenSetPosition() {
Vector2 pos = new Vector2(0f, 0f);
chicken.setPosition(pos);
assertEquals(pos, chicken.getPosition());
}
/**
* Tests Creation of a frog.
*/
@Test
void TestFrogCreation() {
assertNotNull(frog, "Frog should not be null.");
}
/**
* Tests that the frog is an Entity.
*/
@Test
void TestFrogIsEntity() {
assertEquals(frog.getClass(), Entity.class);
}
/**
* Tests that the frog has the correct components.
*/
@Test
void TestFrogHasComponents() {
assertNotNull(frog.getComponent(PhysicsComponent.class));
assertNotNull(frog.getComponent(PhysicsMovementComponent.class));
assertNotNull(frog.getComponent(FrogAnimationController.class));
assertNotNull(frog.getComponent(CombatStatsComponent.class));
assertNotNull(frog.getComponent(HitboxComponent.class));
assertNotNull(frog.getComponent(ColliderComponent.class));
}
/**
* Tests that the frog has the correct stats.
*/
@Test
void TestFrogStats() {
assertEquals(1, frog.getComponent(CombatStatsComponent.class).getHealth(),
"frog should have 1 HP.");
assertEquals(0 ,
(frog.getComponent(CombatStatsComponent.class).getSpeed()),
"frog should have 0 speed.");
}
/**
* Tests that the Frog has correct animations.
*/
@Test
void TestFrogAnimation() {
assertTrue(frog.getComponent(AnimationRenderComponent.class).hasAnimation("float") ,
"Frog should have wander float animation.");
assertTrue(frog.getComponent(AnimationRenderComponent.class).hasAnimation("angry_float") ,
"Frog should have wander angry_float animation.");
}
/**
* Tests that the frog is in the correct spot when placed.
*/
@Test
void TestFrogSetPosition() {
Vector2 pos = new Vector2(0f, 0f);
frog.setPosition(pos);
assertEquals(pos, frog.getPosition());
}
static class TestComponent1 extends Component {}
}