diff options
author | Justin Wernick <justin@worthe-it.co.za> | 2022-04-19 21:28:44 +0200 |
---|---|---|
committer | Justin Wernick <justin@worthe-it.co.za> | 2022-04-19 21:28:44 +0200 |
commit | dc01a3e25e6c4ef056467e36f876ebd68f3ade22 (patch) | |
tree | 2147462c4cbe9a7b0de59d13bb20c842e33f75a3 /2015-spacebot/test/game_state.cpp | |
parent | be89211af895548425be999f660a1195efe9fc8a (diff) | |
parent | 8eebf1079fbed2848ee47cf990f5def5926a0c1f (diff) |
Merge branch 'spacebot-main'
Diffstat (limited to '2015-spacebot/test/game_state.cpp')
-rw-r--r-- | 2015-spacebot/test/game_state.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/2015-spacebot/test/game_state.cpp b/2015-spacebot/test/game_state.cpp new file mode 100644 index 0000000..a9975f2 --- /dev/null +++ b/2015-spacebot/test/game_state.cpp @@ -0,0 +1,90 @@ +#include "catch.hpp" +#include <sstream> + +#include "game_state.h" + +SCENARIO("game state is read from istream") +{ + GIVEN("a valid map file") + { + std::stringstream file; + file << "###################" << std::endl; + file << "# Node Sample Bot #" << std::endl; + file << "# Round: 1 #" << std::endl; + file << "# Kills: 0 #" << std::endl; + file << "# Lives: 2 #" << std::endl; + file << "# Missiles: 0/1 #" << std::endl; + file << "###################" << std::endl; + file << "# #" << std::endl; + file << "# VVV #" << std::endl; + file << "# --- --- #" << std::endl; + file << "# --- --- #" << std::endl; + file << "# --- i --- #" << std::endl; + file << "# #" << std::endl; + file << "# #" << std::endl; + file << "# #" << std::endl; + file << "# #" << std::endl; + file << "# #" << std::endl; + file << "# x x x #" << std::endl; + file << "# #" << std::endl; + file << "# x x x #" << std::endl; + file << "# #" << std::endl; + file << "# | #" << std::endl; + file << "# #" << std::endl; + file << "# #" << std::endl; + file << "# ! #" << std::endl; + file << "# --- --- #" << std::endl; + file << "# --- --- #" << std::endl; + file << "# --- --- #" << std::endl; + file << "# AAA #" << std::endl; + file << "# #" << std::endl; + file << "###################" << std::endl; + file << "# Missiles: 0/1 #" << std::endl; + file << "# Lives: 2 #" << std::endl; + file << "# Kills: 0 #" << std::endl; + file << "# Round: 1 #" << std::endl; + file << "# Node Sample Bot #" << std::endl; + file << "###################" << std::endl; + + WHEN ("the game state is initilized") + { + GameState state(std::move(file)); + + THEN("the aliens are read correctly") + { + auto aliens = state.aliens(); + REQUIRE(aliens.size() == 6); + REQUIRE(aliens[0].x() == 10); + REQUIRE(aliens[0].y() == 11); + REQUIRE(aliens[5].x() == 16); + REQUIRE(aliens[5].y() == 13); + } + + THEN("the shields are read correctly") + { + auto shields = state.shields(); + REQUIRE(shields.size() == 36); + } + + THEN("the enemy bullets are read correctly") + { + auto bullets = state.bullets(); + REQUIRE(bullets.size() == 2); + } + + THEN("the player missiles are read correctly") + { + auto missiles = state.missiles(); + REQUIRE(missiles.size() == 1); + REQUIRE(missiles[0].x() == 11); + REQUIRE(missiles[0].y() == 18); + } + + THEN("the spaceships are read correctly") + { + REQUIRE(state.playerSpaceship()->x() == 9); + REQUIRE(state.playerSpaceship()->y() == 22); + } + } + } +} |