コード例 #1
0
            public void ShouldStartTheScoreOnZeroZeroForBothTeams()
            {
                ITicTacToeGame subject = fixture.Create <TicTacToeGame>();

                subject.Scores[Team.Zero].Should().Be(0);
                subject.Scores[Team.Cross].Should().Be(0);
            }
コード例 #2
0
            public void ShouldNotIncrementTheScoreWhenThereIsADraw()
            {
                Action <GameFinishedArgs> gameFinished = null;
                Team    actualWinningTeam = Team.None;
                LineWin actualLineWin     = LineWin.None;

                mockBoard.SetupSet <Action <GameFinishedArgs> >(x => x.GameFinished = It.IsAny <Action <GameFinishedArgs> >())
                .Callback((x) =>
                {
                    gameFinished = x;
                });
                ITicTacToeGame subject = fixture.Create <TicTacToeGame>();

                subject.TeamAndLineWon += (ValueTuple <Team, LineWin> arg) =>
                {
                    actualWinningTeam = arg.Item1;
                    actualLineWin     = arg.Item2;
                };
                subject.IsGameOver.Should().BeFalse();

                gameFinished?.Invoke(new GameFinishedArgs(GameResult.Draw, null, LineWin.None));

                subject.Scores[mockBoard.Object.PlayerOne.Team].Should().Be(0);
                subject.Scores[mockBoard.Object.PlayerTwo.Team].Should().Be(0);
                actualWinningTeam.Should().Be(Team.None);
                actualLineWin.Should().Be(LineWin.None);
            }
コード例 #3
0
            public void ShouldShowWhichTeamAndLineWonAndThatTheGameIsOver()
            {
                Action <GameFinishedArgs> gameFinished = null;
                Team    actualWinningTeam = Team.None;
                LineWin actualLineWin     = LineWin.None;

#pragma warning disable CS0618
                mockBoard.SetupSet(x => x.GameFinished).Callback((x) =>
#pragma warning restore CS0618
                {
                    gameFinished = x;
                });
                ITicTacToeGame subject = fixture.Create <TicTacToeGame>();
                subject.TeamAndLineWon += (ValueTuple <Team, LineWin> arg) =>
                {
                    actualWinningTeam = arg.Item1;
                    actualLineWin     = arg.Item2;
                };
                subject.IsGameOver.Should().BeFalse();

                gameFinished?.Invoke(new GameFinishedArgs(GameResult.Win, mockBoard.Object.PlayerOne, LineWin.MiddleHorizontal));

                actualWinningTeam.Should().Be(mockBoard.Object.PlayerOne.Team);
                actualLineWin.Should().Be(LineWin.MiddleHorizontal);
                subject.IsGameOver.Should().BeTrue();
            }
コード例 #4
0
 private void InitializeTicTacToeGame()
 {
     this.ticTacToeGame            = TicTacToeFactory.Create(Team.Zero);
     ticTacToeGame.ScoreChanged   += OnScoreChanged;
     ticTacToeGame.TeamAndLineWon += OnTeamAndLineWon;
     ticTacToeGame.TeamChanged    += OnTeamChanged;
 }
コード例 #5
0
        public void Run()
        {
            var returnCode = 2;

            while (returnCode == 2)
            {
                returnCode = _game.Start();

                //Code : on quite
                if (returnCode == 0)
                {
                    _game_repository.Delete();
                }

                //[1] Code : on quitte en sauvegardant

                //Code : lancement d'une nouvelle partie
                if (returnCode == 2)
                {
                    _displayer.Clear();
                    _displayer.Show("Lancement d'une nouvelle partie !");
                    _game_repository.Delete();
                    _game_model = _game_factory.Create(NUMBER_ROUND);
                    _game       = new TicTacToeGame(_reader, _displayer, _formatter, _player_factory, _round_factory, _game_model, _game_repository);
                }
            }
        }
コード例 #6
0
            public void ShouldResetTheBoardWithPlayerOneSetAsCross()
            {
                ITicTacToeGame subject = fixture.Create <TicTacToeGame>();

                subject.Reset();

                mockBoard.Verify(x => x.Reset(It.IsAny <Team>()), Times.Once);
            }
コード例 #7
0
 public TicTacToeAction GetAction(ITicTacToeGame game)
 {
     return(new TicTacToeAction
     {
         Tile = Tile,
         Position = _moves.Dequeue()
     });
 }
コード例 #8
0
            public void ShouldUseTheBoardToMakeAMove(BoardPosition position)
            {
                ITicTacToeGame subject = fixture.Create <TicTacToeGame>();

                subject.Move(position);

                mockBoard.Verify(x => x.Move(It.Is <BoardPosition>(pos => pos == position)), Times.Once);
            }
コード例 #9
0
 public MainWindow(ITicTacToeGame ticTacToeGame)
 {
     this.ticTacToeGame            = ticTacToeGame;
     ticTacToeGame.ScoreChanged   += OnScoreChanged;
     ticTacToeGame.TeamAndLineWon += OnTeamAndLineWon;
     ticTacToeGame.TeamChanged    += OnTeamChanged;
     InitializeComponent();
     InitializeBitmapImages();
     OnTeamChanged(currentTeam);
     ClearImages();
 }
コード例 #10
0
            public void ShouldIncrementTheScoreWhenATeamWins()
            {
                Action <GameFinishedArgs> gameFinished = null;

                mockBoard.SetupSet <Action <GameFinishedArgs> >(x => x.GameFinished = It.IsAny <Action <GameFinishedArgs> >())
                .Callback((x) =>
                {
                    gameFinished = x;
                });

                ITicTacToeGame subject = fixture.Create <TicTacToeGame>();

                gameFinished?.Invoke(new GameFinishedArgs(GameResult.Win, mockBoard.Object.PlayerOne, LineWin.RightDiagonal));

                subject.Scores[mockBoard.Object.PlayerOne.Team].Should().Be(1);
            }
コード例 #11
0
            public void ShouldIncrementTheScoreWhenATeamWins()
            {
                Action <GameFinishedArgs> gameFinished = null;

                // Cant get it to work with new methods because of
                // https://github.com/moq/moq4/issues/218
#pragma warning disable CS0618 // Type or member is obsolete
                mockBoard.SetupSet(x => x.GameFinished).Callback((x) =>
#pragma warning restore CS0618 // Type or member is obsolete
                {
                    gameFinished = x;
                });
                ITicTacToeGame subject = fixture.Create <TicTacToeGame>();

                gameFinished?.Invoke(new GameFinishedArgs(GameResult.Win, mockBoard.Object.PlayerOne, LineWin.RightDiagonal));

                subject.Scores[mockBoard.Object.PlayerOne.Team].Should().Be(1);
            }
コード例 #12
0
ファイル: TicTacToeRunner.cs プロジェクト: Selma1/Tic-tac-toe
		public TicTacToeRunner (IReader reader, IDisplayer displayer, IBoardFormatter formatter, IPlayerFactory player_factory, IRoundFactory round_factory, IGameFactory game_factory, IGameRepository game_repository)
		{
			_reader = reader;
			_displayer = displayer;
			_game_repository = game_repository;
			_game_factory = game_factory;
			_formatter = formatter;
			_round_factory = round_factory;
			_player_factory = player_factory;

			//on charge la partie dans le repo
			_game_model = _game_repository.Load();

			if(_game_model == null)
				_game_model = game_factory.Create (NUMBER_ROUND);
			
			_game = new TicTacToeGame (_reader, _displayer, formatter, player_factory, round_factory, _game_model, _game_repository);
		}
コード例 #13
0
        public TicTacToeRunner(IReader reader, IDisplayer displayer, IBoardFormatter formatter, IPlayerFactory player_factory, IRoundFactory round_factory, IGameFactory game_factory, IGameRepository game_repository)
        {
            _reader          = reader;
            _displayer       = displayer;
            _game_repository = game_repository;
            _game_factory    = game_factory;
            _formatter       = formatter;
            _round_factory   = round_factory;
            _player_factory  = player_factory;

            //on charge la partie dans le repo
            _game_model = _game_repository.Load();

            if (_game_model == null)
            {
                _game_model = game_factory.Create(NUMBER_ROUND);
            }

            _game = new TicTacToeGame(_reader, _displayer, formatter, player_factory, round_factory, _game_model, _game_repository);
        }
コード例 #14
0
            public void ShouldSwapToWhichEverTeamIsActivated()
            {
                Team activeTeam = Team.None;
                Action <PlayerSwappedArgs> playerSwapped = null;

                mockBoard.SetupSet <Action <PlayerSwappedArgs> >(x => x.PlayerSwapped = It.IsAny <Action <PlayerSwappedArgs> >())
                .Callback((x) =>
                {
                    playerSwapped = x;
                });
                ITicTacToeGame subject = fixture.Create <TicTacToeGame>();

                subject.TeamChanged += (Team team) =>
                {
                    activeTeam = team;
                };

                playerSwapped?.Invoke(new PlayerSwappedArgs(playerOne));

                activeTeam.Should().Be(playerOne.Team);
            }
コード例 #15
0
            public void ShouldSwapToWhichEverTeamIsActivated()
            {
                Team activeTeam = Team.None;
                Action <PlayerSwappedArgs> playerSwapped = null;

#pragma warning disable CS0618
                mockBoard.SetupSet(x => x.PlayerSwapped).Callback((x) =>
#pragma warning restore CS0618
                {
                    playerSwapped = x;
                });
                ITicTacToeGame subject = fixture.Create <TicTacToeGame>();
                subject.TeamChanged += (Team team) =>
                {
                    activeTeam = team;
                };

                playerSwapped?.Invoke(new PlayerSwappedArgs(playerOne));

                activeTeam.Should().Be(playerOne.Team);
            }
コード例 #16
0
        public static void PrintGame(ITicTacToeGame game, double score)
        {
            Console.Clear();

            Console.WriteLine(game.CurrentPlayer.ToString() + " Turn");
            Console.WriteLine();

            for (var i = 0; i < game.Board.Size; i++)
            {
                for (var j = 0; j < game.Board.Size; j++)
                {
                    var playerSymbol = GetPlayerSymbol(game.Board.Cells[i][j]);
                    Console.Write("{0} ", playerSymbol);
                }
                Console.WriteLine();
            }

            Console.WriteLine();
            Console.WriteLine("Player 1 Score: " + (game.CurrentPlayer == PlayerEnum.Player1 ? score : -score));
            Console.WriteLine("Player 2 Score: " + (game.CurrentPlayer == PlayerEnum.Player2 ? score : -score));
        }
コード例 #17
0
            public void ShouldShowWhichLineWon()
            {
                Action <GameFinishedArgs> gameFinished = null;
                Team    actualWinningTeam = Team.None;
                LineWin actualLineWin     = LineWin.None;

                mockBoard.SetupSet <Action <GameFinishedArgs> >(x => x.GameFinished = It.IsAny <Action <GameFinishedArgs> >())
                .Callback((x) =>
                {
                    gameFinished = x;
                });
                ITicTacToeGame subject = fixture.Create <TicTacToeGame>();

                subject.TeamAndLineWon += (ValueTuple <Team, LineWin> arg) =>
                {
                    actualWinningTeam = arg.Item1;
                    actualLineWin     = arg.Item2;
                };

                gameFinished?.Invoke(new GameFinishedArgs(GameResult.Win, mockBoard.Object.PlayerOne, LineWin.MiddleHorizontal));

                actualLineWin.Should().Be(LineWin.MiddleHorizontal);
            }
コード例 #18
0
ファイル: TicTacToeRunner.cs プロジェクト: Selma1/Tic-tac-toe
		public void Run ()
		{
			var returnCode = 2;

			while (returnCode == 2) {
				returnCode = _game.Start ();

				//Code : on quite
				if (returnCode == 0) {
					_game_repository.Delete ();
				}

				//[1] Code : on quitte en sauvegardant

				//Code : lancement d'une nouvelle partie
				if (returnCode == 2) {
					_displayer.Clear ();
					_displayer.Show ("Lancement d'une nouvelle partie !");
					_game_repository.Delete ();
					_game_model = _game_factory.Create (NUMBER_ROUND);
					_game = new TicTacToeGame (_reader, _displayer, _formatter, _player_factory, _round_factory, _game_model, _game_repository);
				}
			}
		}
コード例 #19
0
 public TicTacToeGameController(ITicTacToeGame ticTacToeGame, IPauseHelper pauseHelper)
 {
     _ticTacToeGame = ticTacToeGame;
     _pauseHelper = pauseHelper;
 }
コード例 #20
0
 public TicTacToeGameController(ITicTacToeGame ticTacToeGame, IPauseHelper pauseHelper)
 {
     _ticTacToeGame = ticTacToeGame;
     _pauseHelper   = pauseHelper;
 }