Exemplo n.º 1
0
        public void TestBoard_PunishFailed()
        {
            GameSettings settings = new GameSettings(DifficultLevel.Middle);

            var player1 = new Mock <IHanabiPlayer>();
            var player2 = new Mock <IHanabiPlayer>();

            List <IHanabiPlayer> players = new List <IHanabiPlayer>();

            players.Add(player1.Object);
            players.Add(player2.Object);
            int          maxHand   = settings.GetMaxHandCards(players.Count);
            NicknameType nickname1 = new NicknameType("player1");
            NicknameType nickname2 = new NicknameType("player2");

            player1.SetupGet <NicknameType>(x => x.nickname).Returns(nickname1);
            player2.SetupGet <NicknameType>(x => x.nickname).Returns(nickname2);
            for (int count = 0; count < maxHand; ++count)
            {
                player1.Setup(x => x.DrawCard(It.IsAny <Card>()));
                player2.Setup(x => x.DrawCard(It.IsAny <Card>()));
            }

            GameBoard board    = new GameBoard(DifficultLevel.Middle, players);
            int       maxError = settings.maxError;

            for (int count = 0; count < maxError; ++count)
            {
                Debug.Assert(board.Punish());
            }
            Debug.Assert(!board.Punish());

            player1.VerifyAll();
            player2.VerifyAll();
        }
Exemplo n.º 2
0
 public NicknameInfo()
 {
     this.ID    = 0;
     this.Type  = NicknameType.NICK_NONE;
     this.Text  = "";
     this.Index = 0;
 }
Exemplo n.º 3
0
        public void TestBoard_DiscardFailed()
        {
            GameSettings settings = new GameSettings(DifficultLevel.Middle);

            var player1 = new Mock <IHanabiPlayer>();
            var player2 = new Mock <IHanabiPlayer>();

            List <IHanabiPlayer> players = new List <IHanabiPlayer>();

            players.Add(player1.Object);
            players.Add(player2.Object);
            int          maxHand   = settings.GetMaxHandCards(players.Count);
            NicknameType nickname1 = new NicknameType("player1");
            NicknameType nickname2 = new NicknameType("player2");

            player1.SetupGet <NicknameType>(x => x.nickname).Returns(nickname1);
            player2.SetupGet <NicknameType>(x => x.nickname).Returns(nickname2);
            for (int count = 0; count < maxHand; ++count)
            {
                player1.Setup(x => x.DrawCard(It.IsAny <Card>()));
                player2.Setup(x => x.DrawCard(It.IsAny <Card>()));
            }

            GameBoard board = new GameBoard(DifficultLevel.Middle, players);

            Card card1 = new Card(new CardIdType(0), new CardIndexType(0), CardColorType.Blue, CardValueType.Value1);

            Debug.Assert(board.Discard(card1));
            Card card2 = new Card(new CardIdType(0), new CardIndexType(0), CardColorType.Blue, CardValueType.Value1);

            Debug.Assert(!board.Discard(card2));

            player1.VerifyAll();
            player2.VerifyAll();
        }
Exemplo n.º 4
0
        public void TestGame_LeaveRoomSuccess()
        {
            NicknameType         nickname = new NicknameType("Caesar");
            Mock <IHanabiPlayer> player   = new Mock <IHanabiPlayer>();

            player.SetupGet <NicknameType>(x => x.nickname).Returns(nickname);

            player.Setup(x => x.OnEnterGame(nickname));
            player.Setup(x => x.OnJoinRoom(It.IsAny <Room>()));
            int count = 0;

            player.Setup(x => x.SendCommand(It.IsAny <Command>()))
            .Callback <Command>(c =>
            {
                switch (++count)
                {
                case 1:
                    VerifyEnterGame(c, ExitGameResult.Success);
                    break;

                case 2:
                    VerifyQuitRoom(c, QuitRoomResult.Success, 0);
                    break;
                }
            });

            GameNameType gameName = new GameNameType("Hanabi");
            Game         game     = new Game(gameName);

            PlayerEnter(game, player.Object, nickname);

            player.VerifyAll();
        }
Exemplo n.º 5
0
        public void OnEnterGame(NicknameType nickname)
        {
            Debug.Assert(GameStatus == PlayerGameStatus.Idle);

            this.Nickname = nickname;
            GameStatus    = PlayerGameStatus.Entered;
            this.LastTurn = false;
        }
Exemplo n.º 6
0
        public void TestGame_JoinRoomSuccess()
        {
            NicknameType         nickname1 = new NicknameType("Caesar");
            NicknameType         nickname2 = new NicknameType("Jenny");
            Mock <IHanabiPlayer> player1   = new Mock <IHanabiPlayer>();
            Mock <IHanabiPlayer> player2   = new Mock <IHanabiPlayer>();

            player1.SetupGet <NicknameType>(x => x.nickname).Returns(nickname1);
            player2.SetupGet <NicknameType>(x => x.nickname).Returns(nickname2);

            RoomIndexType index = new RoomIndexType(0);

            player1.Setup(x => x.OnEnterGame(nickname1));
            player1.Setup(x => x.OnJoinRoom(It.Is <Room>(r => r.RoomIndex == index)));
            int count1 = 0;

            player1.Setup(x => x.SendCommand(It.IsAny <Command>()))
            .Callback <Command>(c =>
            {
                switch (++count1)
                {
                case 1:
                    VerifyEnterGame(c, ExitGameResult.Success);
                    break;
                }
            });

            player2.Setup(x => x.OnEnterGame(nickname2));
            player2.Setup(x => x.OnJoinRoom(It.Is <Room>(r => r.RoomIndex == index)));
            int count2 = 0;

            player2.Setup(x => x.SendCommand(It.IsAny <Command>()))
            .Callback <Command>(c =>
            {
                switch (++count2)
                {
                case 1:
                    VerifyEnterGame(c, ExitGameResult.Success);
                    break;

                case 2:
                    VerifyJoinRoom(c, JoinRoomResult.Success, 2);
                    break;
                }
            });

            GameNameType gameName = new GameNameType("Hanabi");
            Game         game     = new Game(gameName);

            PlayerEnter(game, player1.Object, nickname1);

            PlayerEnter(game, player2.Object, nickname2);
            PlayerJoinRoom(game, player2.Object, index);

            player1.VerifyAll();
            player2.VerifyAll();
        }
Exemplo n.º 7
0
        private void PlayerExit(Game game, IHanabiPlayer player, NicknameType nickname)
        {
            RequestExitGame request = new RequestExitGame();

            request.Nickname = nickname.nickname;

            Command command = new Command();

            command.action  = ActionType.ExitGame.ToString();
            command.payload = JsonConvert.SerializeObject(request);
            game.DispatchRequest(player, JsonConvert.SerializeObject(command));
        }
Exemplo n.º 8
0
        public void TestGame_ExitGameFailed()
        {
            NicknameType         nickname = new NicknameType("Caesar");
            Mock <IHanabiPlayer> player   = new Mock <IHanabiPlayer>();

            player.SetupGet <NicknameType>(x => x.nickname).Returns(nickname);
            player.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyExitGame(c, ExitGameResult.Fail))));

            GameNameType gameName = new GameNameType("Hanabi");
            Game         game     = new Game(gameName);

            PlayerExit(game, player.Object, nickname);

            player.VerifyAll();
        }
Exemplo n.º 9
0
        private void PlayerEnterGame(IHanabiPlayer player, RequestEnterGame request)
        {
            ExitGameResult result   = ExitGameResult.Fail;
            NicknameType   nickname = new NicknameType(request.Nickname);

            if (!Players.ContainsKey(nickname))
            {
                result = ExitGameResult.Success;

                player.OnEnterGame(nickname);
                Players.Add(player.Nickname, player);
            }

            ResponseEnterGame response = new ResponseEnterGame(result);

            SendCommand(player, ActionType.EnterGame, response);
        }
Exemplo n.º 10
0
        public void TestGame_GetRoomListEmptyList()
        {
            NicknameType         nickname = new NicknameType("Caesar");
            Mock <IHanabiPlayer> player   = new Mock <IHanabiPlayer>();

            player.SetupGet <NicknameType>(x => x.nickname).Returns(nickname);
            player.Setup(x => x.OnEnterGame(nickname));
            player.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyEnterGame(c, ExitGameResult.Success))));
            player.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyGameList(c, 0))));

            GameNameType gameName = new GameNameType("Hanabi");
            Game         game     = new Game(gameName);

            PlayerEnter(game, player.Object, nickname);
            PlayerGetRoomList(game, player.Object);

            player.VerifyAll();
        }
Exemplo n.º 11
0
        public void TestGame_EnterGameFail()
        {
            NicknameType         nickname = new NicknameType("Caesar");
            Mock <IHanabiPlayer> player1  = new Mock <IHanabiPlayer>();

            player1.SetupGet <NicknameType>(x => x.nickname).Returns(nickname);
            player1.Setup(x => x.OnEnterGame(nickname));
            player1.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyEnterGame(c, ExitGameResult.Success))));

            Mock <IHanabiPlayer> player2 = new Mock <IHanabiPlayer>();

            player2.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyEnterGame(c, ExitGameResult.Fail))));

            GameNameType gameName = new GameNameType("Hanabi");
            Game         game     = new Game(gameName);

            PlayerEnter(game, player1.Object, nickname);
            PlayerEnter(game, player2.Object, nickname);

            player1.VerifyAll();
            player2.VerifyAll();
        }