Wind Gust Projectile Test - UQcsse3200/2024-studio-2 GitHub Wiki
Wind Gust Projectile Test
This document describes the unit tests implemented for projectiles created by the ProjectileFactory
, specifically focusing on the Wind Gust from Griffin. These tests ensure that the projectiles are correctly instantiated with the necessary components, animations, and AI tasks.
ProjectileFactoryTest
In TestWindGustHasComponents
Test: This test checks whether the WindGust
entity, created by the ProjectileFactory
, has all the necessary components for functioning.
- Components Checked:
PhysicsComponent
PhysicsMovementComponent
WindGustAnimationController
ProjectileAttackComponent
HitboxComponent
ColliderComponent
AITaskComponent
Test Purpose:
Ensures that the WindGust
projectile is properly initialized with all required components for its movement, collision, attack mechanics, and AI behavior.
Code:
@Test
void TestWindGustHasComponents() {
Entity windGust = ProjectileFactory.createWindGust(new Entity());
assertNotNull(windGust.getComponent(PhysicsComponent.class));
assertNotNull(windGust.getComponent(PhysicsMovementComponent.class));
assertNotNull(windGust.getComponent(WindGustAnimationController.class));
assertNotNull(windGust.getComponent(ProjectileAttackComponent.class));
assertNotNull(windGust.getComponent(HitboxComponent.class));
assertNotNull(windGust.getComponent(ColliderComponent.class));
assertNotNull(windGust.getComponent(AITaskComponent.class));
}
TestWindGustAnimationLoaded
Test: This test ensures that the WindGust
entity created by the ProjectileFactory
has its animation properly loaded.
- Components Checked:
AnimationRenderComponent
Test Purpose:
Verifies that the WindGust
projectile contains the correct animation by checking if the AnimationRenderComponent
has the "windGust"
animation.
Code:
@Test
void TestWindGustAnimationLoaded() {
Entity windGust = ProjectileFactory.createWindGust(new Entity());
AnimationRenderComponent animationComponent = windGust.getComponent(AnimationRenderComponent.class);
assertNotNull(animationComponent);
assertTrue(animationComponent.hasAnimation("windGust"), "WindGust should have windGust animation.");
}
TestWindGustAITask
Test: This test checks that the WindGust
entity created by the ProjectileFactory
has the correct AI task components configured.
- Components Checked:
AITaskComponent
Test Purpose:
Ensures that the WindGust
projectile is set up with an AI task for projectile movement and that no task is active initially.
Code:
@Test
void TestWindGustAITask() {
Entity windGust = ProjectileFactory.createWindGust(new Entity());
AITaskComponent aiTaskComponent = windGust.getComponent(AITaskComponent.class);
assertNotNull(aiTaskComponent, "AITaskComponent should not be null for WindGust.");
boolean containsProjectileMovementTask = false;
for (PriorityTask task : aiTaskComponent.getTasks()) {
if (task instanceof ProjectileMovementTask) {
containsProjectileMovementTask = true;
break;
}
}
assertTrue(containsProjectileMovementTask, "The AI task list for WindGust should contain a ProjectileMovementTask.");
assertNull(aiTaskComponent.getCurrentTask(), "No task should be active initially for WindGust.");
}