Testing Planning for create two characters for selection - UQcsse3200/2024-studio-1 GitHub Wiki
The purpose of this plan is to ensure that the createTwoPlayers
method in the PlayerSelection
class returns a list of two players based on their respective configuration files, and that these players can be retrieved and initialized successfully.
Performing a comprehensive JUnit test at this stage is difficult due to the complexity of mocking multiple inputs. However, the method's functionality can be effectively tested manually by utilizing the MainGameScreen
. Below are detailed instructions on how to manually test the functionality of this class.
Each player character is generated from separate JSON configuration files, located in the assets/configs/
directory. The first player's configuration is stored in player.json
, while the second player's configuration is found in player_2.json
.
A sample structure of the configuration file is as follows:
{
"name": "default",
"health": 100,
"favouriteColour": "peach",
"textureFilename": "images/player/player.png",
"textureAtlasFilename": "images/player/player.atlas",
"melee": "pickaxe",
"ranged": "shotgun"
}
Both players are expected to share default configuration values for attributes such as health and weapons. However, they differ in the textureFilename
and textureAtlasFilename
, which specify the paths to their respective animations.
To test the method, the following code should be executed within MainGameScreen.java
:
PlayerSelection playerSelection = new PlayerSelection();
List<Entity> players = playerSelection.createTwoPlayers();
This method invocation returns a list of two players that can be retrieved and displayed on the game screen.
When retrieving the first player using the following code:
Entity player = players.get(0);
The player should spawn on the screen with the statistics declared in the configuration file. The player's health and attributes should match those defined in player.json
, as illustrated in the corresponding game UI.
When retrieving the second player using:
Entity player = players.get(1);
The second player should also spawn with the statistics specified in player_2.json
. However, due to the current absence of animations for the second character, the second player's health is set to 70 to differentiate it from the first player. When starting the game with the second player, the health bar should display a value lower than 70. If the health does not reflect this, it indicates an issue with the method’s functionality.
After manually testing the method, it was confirmed that the createTwoPlayers
method functions as expected. Both players are correctly created from their respective configuration files, and their statistics are properly displayed in the game.
Currently, the game lacks animations for the second character, so the distinction between the two players is made by assigning different health values (70 for the second player). The goal for the next sprint is to implement animations for the second player, allowing both characters to be differentiated by their respective animations rather than health values.