public void Play_Player1WinsPlay_ScorePlayer1() { //Arrange int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); Game game = new Game(rules, "player1", "player2"); //Act string playWinnerName = game.Play(move1.Name, move2.Name); //Assert Assert.AreEqual(1, game.ScorePlayer1); Assert.AreEqual("player1", playWinnerName); Assert.AreEqual("player1", game.LastPlayWinnerName); }
public void GetGame_GameExists_GotTheCorrectGame() { int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); string sessionId = GameSessionManager.StartGame(rules, "player1", "player2"); //Act Game game = GameSessionManager.GetGame(sessionId); //Assert Assert.AreEqual("player1", game.Player1Name); Assert.AreEqual("player2", game.Player2Name); }
public void Play_GameHasWinner_InvalidOperationException() { //Arrange int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); Game game = new Game(rules, "player1", "player2"); game.Play(move1.Name, move2.Name); game.Play(move3.Name, move1.Name); game.Play(move2.Name, move3.Name); //Act game.Play(move2.Name, move3.Name); }
public void Execute_GameDoesNotHaveWinner_InvalidOperationException() { //Arrange IGameRepository repository = RepositoryFactory.GetGameRepository(); int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); Game game = new Game(rules, "player1", "player2"); game.Play(move1.Name, move2.Name); game.Play(move3.Name, move1.Name); RegisterGameResult transaction = new RegisterGameResult(repository, game); //Act transaction.Execute(); }
public void HasWinner_Player2WinsMaxTimes_HasWinner() { //Arrange int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); Game game = new Game(rules, "player1", "player2"); //Act game.Play(move2.Name, move1.Name); game.Play(move1.Name, move3.Name); game.Play(move3.Name, move2.Name); //Assert Assert.AreEqual(true, game.HasWinner()); Assert.AreEqual("player2", game.WinnerName); }
public void HasWinner_NoMaxWinsReached_NoWinner() { //Arrange int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); Game game = new Game(rules, "player1", "player2"); //Act game.Play(move1.Name, move2.Name); game.Play(move3.Name, move1.Name); //Assert Assert.AreEqual(false, game.HasWinner()); Assert.AreEqual(string.Empty, game.WinnerName); }
public void FinishGame_OneGame_GameIsNotStarted() { int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); string sessionId = GameSessionManager.StartGame(rules, "player1", "player2"); //Act GameSessionManager.FinishGame(sessionId); //Assert Assert.AreEqual(false, GameSessionManager.IsGameStarted(sessionId)); Assert.AreEqual(0, GameSessionManager.GetCurrentStartedCount()); }
public void AddMove_ValidMove_MoveExists() { //Arrange int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); //Act rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); //Assert ICollection <string> moves = rules.GetMoves(); Assert.AreEqual(3, moves.Count); Assert.AreEqual(move1.Name, rules.GetMove(move1.Name).Name); Assert.AreEqual(move2.Name, rules.GetMove(move2.Name).Name); Assert.AreEqual(move3.Name, rules.GetMove(move3.Name).Name); }
public void FinishAllGames_NoSessions_SessionCountIs0() { //Arrange int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); GameSessionManager.StartGame(rules, "player1", "player2"); GameSessionManager.StartGame(rules, "player1", "player2"); GameSessionManager.StartGame(rules, "player1", "player2"); //Act GameSessionManager.FinishAllGames(); //Assert Assert.AreEqual(0, GameSessionManager.GetCurrentStartedCount()); }
public void AddKill_KillNameSameAsMove_ThrowArgumentException() { //Arrange string moveName = "Rock"; Move newMove = new Move(moveName); //Assert newMove.AddKill(moveName); }
public void AddKill_EmptyKillName_ThrowArgumentException() { //Arrange string moveName = "Rock"; string killName = string.Empty; Move newMove = new Move(moveName); //Assert newMove.AddKill(killName); }
public void Play_EmptyMoveName_ThrowArgumentException() { //Arrange string moveName = "Rock"; string againstMoveName = string.Empty; Move newMove = new Move(moveName); newMove.AddKill(againstMoveName); //Act PlayResult result = newMove.Play(againstMoveName); }
public void Play_ValidMoveName_Win() { //Arrange string moveName = "Rock"; string againstMoveName = "Scissors"; Move newMove = new Move(moveName); newMove.AddKill(againstMoveName); //Act PlayResult result = newMove.Play(againstMoveName); //Assert Assert.AreEqual(PlayResult.Win, result); }
private GameRules GetGameRules() { int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); return(rules); }
public void Clone_CompleteMove_ValidClone() { //Arrange string moveName = "Rock"; string againstMoveName = "Paper"; Move move = new Move(moveName); move.AddKill(againstMoveName); //Act Move clone = (Move)move.Clone(); //Assert PlayResult result = clone.Play(againstMoveName); Assert.AreEqual(move.Name, clone.Name); Assert.AreEqual(move.Play(againstMoveName), clone.Play(againstMoveName)); }
public void Execute_ValidPlayer_GamesFound() { //Arrange IGameRepository repository = RepositoryFactory.GetGameRepository(); int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); Game game = new Game(rules, "player1", "player2"); game.Play(move1.Name, move2.Name); game.Play(move3.Name, move1.Name); game.Play(move2.Name, move3.Name); RegisterGameResult registerGameTransaction = new RegisterGameResult(repository, game); registerGameTransaction.Execute(); GetPlayedGamesByPlayer getPlayedTransaction = new GetPlayedGamesByPlayer(repository, "player1"); //Act getPlayedTransaction.Execute(); //Assert IEnumerable <GameData> result = getPlayedTransaction.GetResult(); GameData playedGame = result.ElementAt(0); Assert.AreEqual(3, playedGame.ScorePlayer1); Assert.AreEqual(0, playedGame.ScorePlayer2); Assert.AreEqual("player1", playedGame.WinnerName); }
public void GetMove_MoveNotAdded_ThrowElementNotFoundException() { //Arrange int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); //Act rules.GetMove("Spock"); }
public void AddMove_MoveAlreadyAdded_ThrowElementAlreadyExistsException() { //Arrange int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); //Act rules.AddMove(move1); }
public void Create_Player2NameEmpty_ArgumentException() { //Arrange int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); //Act Game game = new Game(rules, "player1", string.Empty); }
public void Create_NullRepository_ArgumentException() { //Arrange int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); Game game = new Game(rules, "player1", "player2"); //Act RegisterGameResult transaction = new RegisterGameResult(null, game); }
public void GetGameSessionCount_OneGame_SessionCountIs1() { int maxWins = 3; Move move1 = new Move("Rock"); Move move2 = new Move("Scissors"); Move move3 = new Move("Paper"); GameRules rules = new GameRules(maxWins); move1.AddKill(move2.Name); move2.AddKill(move3.Name); move3.AddKill(move1.Name); rules.AddMove(move1); rules.AddMove(move2); rules.AddMove(move3); string sessionId = GameSessionManager.StartGame(rules, "player1", "player2"); //Act int sessionCount = GameSessionManager.GetCurrentStartedCount(); //Assert Assert.AreEqual(1, sessionCount); }