Unit testing is done with JUnit, with reports from Jacoco. Interfaces are used for dependency injection testing needed to cover methods that utilise random numbers, as well as with few void methods that mainly call other methods.
Tests can be run with command
mvn test jacoco:report
and the report is found at /target/site/jacoco/index.html.
The final test coverage, with non-essential files (Main, TestRoomBuilder, TestMazeBuilder, TestDoorBuilder) excluded.
Final report with Main included.
Tests in the final JAR includes Main.java.
Final map is tested with a crawler that runs on a depth-first search, and seeks to access all non-wall squares (value > 1) on the map. Crawler is run based on parameters, and outputs true or false after the test to indicate whether the corridors and rooms all connect or not.
EXAMPLE: Crawler checking this final map.
████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
████████████████████ ██ ████ █████████ ████ ██ █ ██ ██ █ ███████████████████████████████ ██████████ █████████
████████████████████ ████████+██ █+███████████+██████ █ █ █ █ █████████ █ ██ ██ ██ ██ █ █ █████████████ ██ ██ █ █ █████ ███████████████████ █ ███████ ██ █████████
████████████████████ █ █ + ██ █████ + █ █ ████ ███ █ ██ █████ █ ███ ██████ ██ ██ █ ██ █ ███████████████████ █████ █ ███ ███████
█████████████████████ █ ███ ██ ████ ██ █ ████ ██ ██████ █████████ ██ █ ██████ █ ████████ ██ ██ █ ███ ██ ███████████████ ██████
█████████████████████ █ █████████ ███ █ + █ ██████ ██ ███████████████ ███ █ + ███████ █ ███████ ███ █ ███ ████+███████ ███████ ██████
██ + █ █ █████████ █ ██ █ █ █████ █ ███████████████ ███ ████ ██████ ██ ████████+██ █ ███ ████ ██ ███████ ██████
█ ██ █ ██ █████████ █ ████ █ █ █████ ██ ████████████ + ███ ███████ ██████ ████ ███ █ ███ █ ████ ██ ███████ █████
█ ███ █ ██ █████████ + █ █ █████ ████████████ + █ ██████████████████ ███ █ ████ █ ██████ ██++███████████ ████
█ █ █ █ █████████ ██████ █ █ ██████████ ██ ███ █████ ███ ████████████ █ █ █ ████ ██ ███████████ ████
███ █ ██ █ █████████ ██████ █████ ███████ ████████████████ █ ███ ██ █ ████████████████ █ █ █ ████ █ █ █ █ ████
█ █ █ █ █████████ ██████ █ ████ ███████ ███ █████████ █ █ ████ █ █ ██ ████ █ █ █ █ ███ █ ██ █ █ ███
█ ███ █ ██████████████ ██ ██████ █ ███ ███████ ██ ██ █████████ ██ █ █ ██ █ █ █████ + ██ █ █ ██ ██+█████████ ███
█ ███ █ ██ █ ██ ██ ███████████ ██ █████████+██+████ ███ █ ██ ███████ ████ █ █ █████████████████████████ ████ + █ █ █ █████ █
█ █████████████████ ██ ███ ██ ████████████████████ █ ██ ████████ ██ ███ █ ██ ████████ ████ █ █ █████████████████ █ ███ █ ██ ████ █ █+███████ █
██ ███████████████████████ ███ ██ ██████████████████ ███ ████ ████ █ ██+███████ █ + █ █ █ █ █████████████ █ █ ███████ ██ █ ██ █ █ █
███ ████████████████████ ██ ███ █████ █████████ █████████████ ██████ ████+█████ ██████ █ █ ███ █ ██ █ ████████████ ████ █ █ █████████ ██ █████ █ █
███ ██████████ █ █████ ████ + ██ █████████ █ ███ ████████ ███ ██ █ ██ █ █ ███ █ █ ██ ███ ██ ███ ███████ █ ██████████ █ █ █ █
███ ██████████ █ █████ █ ██ ██ ███████████ █ ███ ███ + ███ ██ ████ ██ ██████ ██ █ ████ ███ ███ ██ █ █ █ ███ ██████+█████ █████████ █
███ ████████ █ ████████ █ █ ██ ███████████ █ █ ███ █████ ███+███ ██ █████████████ + ████████████ ████ ███ █ ██ █ █ █ █ ███ ██ ██████ █
█████ ██ ██ █ ███████ █ █ ███ + ███████ █ █ ███████████████ ██ █ ███ ███ █ + ██ + █ ███ ███ █ █ ██ ██ ██ ██ ████████ ████
█████ ██ ██ █ ██ █ ██ █ █████████ █ ██ █ █ ███████████ ██ █ ███ █ █ ██ █ ████+████ █ ████████████ ██ █ ███ █ ████
█████ ██ ██ █ █ █ █ █ ██ ████ ███████+██ █ ████████████████████ █████████ █ █████ █ ███ █████ █ █ ██ █ ███ ██ █ ████
████ ██ ██ ██ █ ██ █ ██ █████████████████ █████ ████████ ██ ████ █ █████ █ ████ █ ███ █████████ █ █ █ ██ ███ ████
████ ███ ██ █ █ ██ █ ███++██ ██ ████ █ ███████ █ █ ███ █ █ ████ ██ ███ █ ██ ██ ██ ██ █ █ █ ███████████
██ ███ ██ █ ██ █ █ ███ ██ ██ + █ █ ██ █████████ █ █ ██ ████ ███ █ ██ ███████ ███ █ █ █ █ █ █████ + ███
█ ██████+████ █ ██ █ ████████ ██ █████ █ █ █ ███ ██████ █ █ █ ████ █████ █ ██ █████ █ + ██ █ █ ████ █ ███
█ ███████ ████ █ ██ █ █████ ██ █████ █ █ ███████████+██████ █ ██ █ ███ ██ █ ███████████████ █ █ █ █ ██ █ ██████
█ ███ ████████+███ ██ ████ ████ ██ ██ █ █ ███ ██ ██ █ █ █ █████████+██ ██ █ ██ █ ██ ██ █ █ ██ █ ██ ████
█████ █████ ██ + ██ ███ ██ ██ █ █ ████ █ █ █ █ █ ██ █ ███████ ██ █ ██ █ ████ ██ █ █ ████ ███
█████ ██ ███████████+███ ██ ███ ███ ██ ██ █ █ █████ █ █ ██ █ ██ ██ █ █████ ███ █ ██ █ █ █ █ ████████████ ██
█████ █████ ██ ██ █ ███ ██ ██ + █ ████ █ █ ██ █ █ ███████ █ ███ █ ██ ████ █ █ ██ ████ ███ █
██████████████ ██ ███ ████ ██ ██ █ ███████ ██ █ █ █ █ █ ██████ █████ ██ ██ ████ █ █ ███████████ ████ █
████████ ██ ████████████████ ██ ██ █ █ ██ ██ ██ ██████ █ █ █ ███ ███████ ██ ██ ██ █ █ █████████ ███ █
████████ ██ ████████ ██ ██████████████+██████ █ █ █ ███ ██ ██ █ █ █ █ █████ ███████████ ██ ██████+█████████ ███ ██ + ██
████████ ██ ████████ ██ ██ █ █ ████ ██ █ █ ██████ █ █████████ █████+███████████ ██ █████ ██████████ ███ █ █ █ ████
████████ ██ █████████████+██████ █ ███ █ █ ██ ███ ████ ██ █ █████████████████ ██ ██ ████ ██ ████ ██ █ ██ █ █ ███
████████ ██ +██+█████████ ██ █ ███ █ ██ ███ ██████ █ █ █████ ██████████ ██ ███ ████ ███ ███ █ █████+██ █ ██ █
████████ ██ ███ ██████ █████ ███ ███████ ██ ██ █ + █ █ ███ ██ ██████████████ + ██ ██ █ █ █████ █ █ ████ █
████████ ██ ███ ██████████ █ █████████████ ████ ███ ██ ███ █++█ ████ █ █ █ ███████████ █ ██ █ ██ █ █████ █ ███████████ █
████████ ██ ███ █████ █ ████████████ ████ ██ ██ ███ █ ██████ █ █ ██ ███████ ███████████+████ ██ █ █████ █ ███████████ █
████████ ██ ███ ████ █████████████████████ ██████ ██ ███ ██████ █ ███ █ █ ███ ████ ██████ █████████ ███ █████ █ █ █ █
████████ ████████████████ ███ █ + ██ █ ████ + ██ █████████████████████ ████ ███ █ █ ████ █ ████ █████████████ █ + █████ + █ █ █
████████ + ███ █ ████ ███ ██ █ ██ █ ██ █ ███ █████████████████████ ██ █ ██ ███████ ████ █ █ █ ████ █ ██ ██ █████ █ █████+█████ █
████████ █ ███ █ █ █ ██████████ ████████+██ ███ █ █ ███ ██████ █████████████████ ██ ██ ██████████ █ █ ███ █ █ ██ █████████████████ ███ ███ █
████████ █ ██ █ █ ███ ███████ ██ ████ █ █ █████ ██ ██████ █ █ ████ █ █ ███████ ██████████████ ███ ███ ███ █ █████ █████ █ █
█████████████ █ ███████ ███ █ █████ ██ ██ ████ ██████ █ █ ██████ ██████ ██████ █ █ ████ + █████ ████ █ █ █████ █ ██ █████ █ ███ █████ █ ███
█████████████ ████████ █ █ █████ █ ██ ███ ████++█████ █ █ █ ███ ███████ ██ █ ████████████ ████████ ██ ███ + ███████ █ █ ███████████ █████ █ ███
██████████████████████████ █ █ █████ ██ ██████ █████████ █ ███████████████████████ ███████████████████████████ ██████████████████████ ███
████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
false
Validity check took: 4ms.
See large room in the lower left corner, and the smaller, tall room right to it. Larger room has a 'ghost door', and the smaller one is not connected to the main network at all. The crawler noticed this and reported false, indicating the map is not valid. See Implementation Doc for details of the bug causing this. Main point here is that the crawler does work
Test coverage on week five.
Test coverage on week four.
Test coverage on week three.
Test coverage on week two.