public void TestRenderMatchResultPlayerOneWinOnTies() { // Given var game = Match.GetInstance(); game.StartNewGame(); // When game.Update(); var p1 = game.GetPlayer(1); p1.Lives = 0; p1.Kills = 10; p1.Ship.Destroy(); var p2 = game.GetPlayer(2); p2.Lives = 0; p2.Kills = 10; p2.Ship.Destroy(); game.Update(); var summary = new SpaceInvadersRenderer().RenderSummary(game); // Then Assert.IsTrue(game.GameIsOver(), "Game did not end."); Assert.AreEqual(1, summary.Winner, "Winner was not set to 1."); Assert.AreEqual("Match was a tie, so player 1 wins by default.", summary.WinReason, "Win reason was incorrect."); }
public void TestRenderMatchResultPlayerTwoWinKills() { // Given var game = Match.GetInstance(); game.StartNewGame(); // When game.Update(); var p1 = game.GetPlayer(1); p1.Lives = 0; p1.Kills = 4; p1.Ship.Destroy(); var p2 = game.GetPlayer(2); p2.Lives = 0; p2.Kills = 10; p2.Ship.Destroy(); game.Update(); var summary = new SpaceInvadersRenderer().RenderSummary(game); // Then Assert.IsTrue(game.GameIsOver(), "Game did not end."); Assert.AreEqual(2, summary.Winner, "Winner was not set to 2."); Assert.AreEqual("Player 2 had more kills than player 1.", summary.WinReason, "Win reason was incorrect."); }
public void TestJsonDeserialization() { // Given CoordinateFlipper flipper; var game = CreateInterestingGameState(out flipper); var renderer = new SpaceInvadersRenderer(); var state = renderer.Render(game).State; var mapReal = renderer.Render(game).Map; Debug.WriteLine("Map:"); Debug.WriteLine(mapReal); // Prevent further shooting as that introduces randomness game.GetPlayer(1).AlienManager.TestPreventAllAliensShoot(); game.GetPlayer(2).AlienManager.TestPreventAllAliensShoot(); for (var i = 0; i < 5; i++) { game.Update(); //Debug.WriteLine(""); mapReal = renderer.Render(game).Map; //Debug.WriteLine(mapReal); } // When var match = JsonConvert.DeserializeObject <Match>(state, new JsonSerializerSettings { Converters = { new EntityConverter() }, NullValueHandling = NullValueHandling.Ignore } ); Match.SetInstance(match); // Prevent further shooting as that introduces randomness var mapPredicted = renderer.Render(match).Map; match.GetPlayer(1).AlienManager.TestPreventAllAliensShoot(); match.GetPlayer(2).AlienManager.TestPreventAllAliensShoot(); for (var i = 0; i < 5 + 1; i++) { match.Update(); //Debug.WriteLine(""); mapPredicted = renderer.Render(game).Map; //Debug.WriteLine(mapPredicted); } Debug.WriteLine(""); Debug.WriteLine("Map predicted:"); Debug.WriteLine(mapPredicted); // Then Assert.AreEqual(mapReal, mapPredicted); }
public void TestRenderMatchResultPlayerTwoWin() { // Given var game = Match.GetInstance(); game.StartNewGame(); // When game.Update(); game.GetPlayer(1).Lives = 0; game.GetPlayer(1).Ship.Destroy(); game.Update(); var summary = new SpaceInvadersRenderer().RenderSummary(game); // Then Assert.IsTrue(game.GameIsOver(), "Game did not end."); Assert.AreEqual(2, summary.Winner, "Winner was not set to 2."); Assert.AreEqual("Player 1 ran out of lives.", summary.WinReason, "Win reason was incorrect."); }