예제 #1
0
        public void Throws_Exception_When_Setting_Current_Player_With_No_Players()
        {
            var gameSettings   = BuildGameSettings();
            var playersFactory = new MockPlayersFactory().CreateStubbedToReturn(new List <IPlayer>());
            var initializer    = BuildGameInitializer(playersFactory);

            Action action = () => initializer.Create(gameSettings);

            action.ShouldThrow <ArgumentException>();
        }
예제 #2
0
        public void Creates_New_Game_Setting_Current_Player_To_Be_Last_Player()
        {
            var gameSettings   = BuildGameSettings(playerStartType: PlayerStartType.LastPlayerFirst);
            var player1        = new MockPlayer();
            var player2        = new MockPlayer();
            var playersFactory = new MockPlayersFactory().CreateStubbedToReturn(new List <IPlayer> {
                player1, player2
            });
            var initializer = BuildGameInitializer(playersFactory);

            var game = initializer.Create(gameSettings);

            game.CurrentPlayer.Should().Be(player2);
        }
예제 #3
0
        public void Creates_New_Game_With_Players()
        {
            var ai             = new MockIntelligence();
            var gameSettings   = BuildGameSettings();
            var aiFactory      = new MockIntelligenceFactory().CreateStubbedToReturn(ai);
            var playersFactory = new MockPlayersFactory().CreateStubbedToReturn(new List <IPlayer> {
                new MockPlayer()
            });
            var initializer = BuildGameInitializer(playersFactory, aiFactory: aiFactory);

            var game = initializer.Create(gameSettings);

            game.Should().NotBeNull();
            game.Board.Size.Should().Be(3);
            game.Players.Count().Should().Be(1);
            playersFactory.VerifyCreatedCalled(gameSettings, ai);
        }