Пример #1
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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();
        }
Пример #5
0
        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);
        }
Пример #6
0
        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());
        }
Пример #10
0
        public void AddKill_KillNameSameAsMove_ThrowArgumentException()
        {
            //Arrange
            string moveName = "Rock";
            Move   newMove  = new Move(moveName);

            //Assert
            newMove.AddKill(moveName);
        }
Пример #11
0
        public void AddKill_EmptyKillName_ThrowArgumentException()
        {
            //Arrange
            string moveName = "Rock";
            string killName = string.Empty;
            Move   newMove  = new Move(moveName);

            //Assert
            newMove.AddKill(killName);
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
        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));
        }
Пример #16
0
        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);
        }
Пример #17
0
        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");
        }
Пример #18
0
        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);
        }
Пример #19
0
        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);
        }
Пример #20
0
        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);
        }