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(); }
public NicknameInfo() { this.ID = 0; this.Type = NicknameType.NICK_NONE; this.Text = ""; this.Index = 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(); }
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(); }
public void OnEnterGame(NicknameType nickname) { Debug.Assert(GameStatus == PlayerGameStatus.Idle); this.Nickname = nickname; GameStatus = PlayerGameStatus.Entered; this.LastTurn = false; }
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(); }
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)); }
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(); }
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); }
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(); }
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(); }