Testing Plan for ConcreteRangedWeapon - UQcsse3200/2024-studio-1 GitHub Wiki
Test Plan: ConcreteRangedWeapon class
Introduction
This test plan is designed to validate the functionality of the ConcreteRangedWeapon
class, which represents a ranged weapon in the game. The test cases will cover the creation of the weapon, its interaction with other game entities, and its behavior during gameplay, such as pickup, drop, and shooting.
Test Cases
1. Test Weapon Creation
Objective:
Verify that a ConcreteRangedWeapon
object can be successfully created and is an instance of RangedWeapon
.
Input:
- Weapon name: "gun"
- Icon path: "gun.png"
- Damage: 10
- Range: 10
- Fire rate: 10
- Reload time: 10
- Clip size: 10
- Ammo: 10
Expected Output:
- The created object should be an instance of
RangedWeapon
.
2. Test Set Weapon Entity
Objective:
Ensure that the weapon entity can be set correctly in a ConcreteRangedWeapon
object.
Input:
- Weapon name: "gun"
- Weapon entity: A mock entity object
Expected Output:
- The
getWeaponEntity()
method should return the entity that was set.
3. Test Get Weapon Entity
Objective:
Check that the correct weapon entity is returned after being set.
Input:
- Weapon entity: A mock entity object
Expected Output:
- The entity returned by
getWeaponEntity()
should match the input entity.
4. Test Weapon Pickup
Objective:
Verify that the pickup()
method correctly adds the ranged weapon to the player's inventory.
Input:
- A new
ConcreteRangedWeapon
object - A player entity with an empty inventory
Expected Output:
- The weapon should be added to the player's inventory, and
inventory.getRanged()
should return a present value.
5. Test Weapon Drop
Objective:
Ensure that the drop()
method correctly removes the ranged weapon from the player's inventory.
Input:
- A new
ConcreteRangedWeapon
object - A player entity with the weapon already picked up
Expected Output:
- The weapon should be removed from the player's inventory, and
inventory.getRanged()
should return an empty value.
6. Test Get Specification
Objective:
Check if the getSpecification()
method returns the correct weapon specification string.
Input:
- A
ConcreteRangedWeapon
object with name "gun"
Expected Output:
- The method should return "ranged:gun".
7. Test Get Weapon Name
Objective:
Ensure that the getName()
method returns the correct weapon name.
Input:
- A
ConcreteRangedWeapon
object with name "gun"
Expected Output:
- The method should return "gun".
8. Test Getters and Setters
Objective:
Verify that the getters and setters for weapon properties (damage
, range
, fireRate
, reloadTime
, clipSize
, ammo
) work as expected.
Input:
- A
ConcreteRangedWeapon
object with initial values for weapon properties (10 for each) - Update values: 20 for each property
Expected Output:
- Getters should return the initial values after creation.
- Getters should return the updated values after setters are called.
9. Test Weapon Shooting
Objective:
Check if the shoot()
method fires the weapon correctly and reduces the ammo count appropriately.
Input:
- A
ConcreteRangedWeapon
object with ammo - A target vector (Vector2.Zero)
Expected Output:
- The
shoot()
method should reduce the ammo count and ensure the weapon is still in the player's inventory.
Conclusion
This test plan covers the core functionality of the ConcreteRangedWeapon
class. The test cases ensure that weapon creation, inventory interactions, property modifications, and combat mechanics behave as expected. By passing these tests, the integrity and performance of ranged weapon functionality in the game can be assured.