summaryrefslogtreecommitdiff
path: root/2015-spacebot/test/game_state.cpp
diff options
context:
space:
mode:
Diffstat (limited to '2015-spacebot/test/game_state.cpp')
-rw-r--r--2015-spacebot/test/game_state.cpp90
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);
+ }
+ }
+ }
+}