Test Plan for MainGameOrderTicketDisplay - UQcsse3200/2024-studio-3 GitHub Wiki
- Framework: JUnit 5
-
Dependencies:
-
MainGameOrderTicketDisplay
: The main class under test. -
ServiceLocator
: Manages the services used in the game. -
RenderService
,DocketService
,EventHandler
: Mocked services to isolate the class under test. -
Stage
,OrthographicCamera
,Viewport
: Mocked components of the rendering system.
-
-
Initialisation Test
-
Purpose: Verify that
MainGameOrderTicketDisplay
is properly initialised. -
Setup:
- Initialise
MainGameOrderTicketDisplay
with mocked dependencies (RenderService
,DocketService
,Stage
,Viewport
,EventHandler
). - Simulate the
create()
method call.
- Initialise
-
Expected Outcome:
- Lists (
tableArrayList
,startTimeArrayList
, etc.) should be initialised and empty. - Event listeners should be registered correctly.
- Lists (
-
Purpose: Verify that
-
Adding Order Tickets
- Purpose: Test the addition of order tickets to the display.
-
Setup:
- Call the
addActors()
method to simulate adding order tickets. - Repeat the process to ensure multiple tickets can be added.
- Call the
-
Expected Outcome:
- The
tableArrayList
should have the correct number of entries after multiple additions. - Tables should be added to the stage, and their properties (position, size) should be correct.
- The
-
Removing Order Tickets
- Purpose: Ensure that order tickets can be removed from the display.
-
Setup:
- Add several tickets using
addActors()
. - Clear the
tableArrayList
.
- Add several tickets using
-
Expected Outcome:
- The
tableArrayList
should be empty after clearing. - No exceptions should be thrown, and resources should be cleaned up correctly.
- The
-
Default Sizes of Non-Enlarged and Enlarged Dockets
- Purpose: Ensure that order tickets other than the last one are not enlarged and only one ticket is enlarged.
-
Setup:
- Add multiple tickets using
addActors()
. - Call
updateDocketSizes()
and inspect each ticket.
- Add multiple tickets using
-
Expected Outcome:
- All tickets except the last one should have the default size (120x150 units).
- Last ticket should have the enlarged size. Both are dynamically calculated via current window viewport values.
-
Enlargement of Last Docket
- Purpose: Verify that the last order ticket in the list is enlarged correctly.
-
Setup:
- Add multiple tickets to the list.
- Call
updateDocketSizes()
to trigger the resizing logic.
-
Expected Outcome:
- The last ticket should be resized to a larger dimension (1.7 times greater than normal docket dimensions).
- The position of the last ticket should be dynamically adjusted according to the viewport dimensions.
-
Shifting Dockets Left
- Purpose: Test the behaviour when shifting the order tickets left.
-
Setup:
- Add several tickets to the list.
- Call
shiftDocketsLeft()
to simulate the shift.
-
Expected Outcome:
- The first ticket should move to the end of the list.
- All positions and sizes should be updated correctly.
-
Shifting Dockets Right
- Purpose: Test the behaviour when shifting the order tickets right.
-
Setup:
- Add several tickets to the list.
- Call
shiftDocketsRight()
to simulate the shift.
-
Expected Outcome:
- The last ticket should move to the beginning of the list.
- All positions and sizes should be updated correctly.
-
Countdown Timer Update
- Purpose: Verify that the countdown timer for each order ticket updates correctly.
-
Setup:
- Add a ticket and simulate time passing using
TimeUtils.timeSinceMillis()
. - Call the
update()
method to trigger the timer logic.
- Add a ticket and simulate time passing using
-
Expected Outcome:
- The timer label for each ticket should update to reflect the remaining time.
- Tickets should be removed when their timer expires.
-
Test <meal_name>
- Purpose: Verify that the meal image doesn't return null and recipe exists.
-
Setup:
- Set recipe as <meal_name>.
- Create() and addActors() and get the first value in the table array.
-
Expected Outcome:
- The table should not return null.
-
Disposing Resources
-
Purpose: Ensure that all resources are correctly disposed of when the
dispose()
method is called. -
Setup:
- Add several tickets and call the
dispose()
method.
- Add several tickets and call the
-
Expected Outcome:
- All lists should be cleared, and resources (like tables) should be removed from the stage.
- No memory leaks should remain.
-
Purpose: Ensure that all resources are correctly disposed of when the
-
Assumptions:
- The game environment is properly set up, and the
ServiceLocator
is correctly registering services. - The tests assume that
Stage
,Viewport
,RenderService
, and other dependencies are correctly mocked and provide the necessary functionality for theMainGameOrderTicketDisplay
class to operate.
- The game environment is properly set up, and the
-
Error Handling:
- The test plan covers cases where no tickets are present to shift (left or right) and checks that appropriate warnings are logged without exceptions being thrown.
-
Visual Testing:
- It should also be noted that testing was also conducted visually throughout the implementation process, as much of our feature is UI-based.
The following video demonstrates the resizing functionality of dockets and meal images.