protected override RemoteTcpEntity CreateServer(TcpClient tcpClient)
 {
     var server = new RemoteTcpServer(tcpClient);
     m_Servers.Add(server);
     m_Servers.CompleteAdding();
     return server;
 }
 private void JoinTable(RemoteTcpServer serverEntity, int table)
 {
     var cmd = new JoinTableCommand()
     {
         TableId=table
     };
     serverEntity.Send(cmd);
     var response = serverEntity.WaitForNextCommand<JoinTableResponse>();
     Assert.IsTrue(response.Success);
 }
 private int GameIsStarting(RemoteTcpServer serverEntity)
 {
     var response = serverEntity.WaitForNextCommand<GameStartedCommand>();
     Assert.AreNotEqual(0,response.NeededBlindAmount);
     return response.NeededBlindAmount;
 }
 private void BeAwareOfOtherPlayerJoined(RemoteTcpServer serverEntity, RemoteTcpServer other)
 {
     var response = serverEntity.WaitForNextCommand<GameMessageCommand>();
     Assert.AreEqual(GameMessageEnum.PlayerJoined, response.Info.OptionType);
     var info = (GameMessageOptionPlayerJoined)response.Info;
     Assert.AreEqual(other.Name, info.PlayerName);
 }
 private int SitInSeat(RemoteTcpServer serverEntity, int tableId, int noSeat)
 {
     var cmd = new PlayerSitInCommand()
     {
         TableId = tableId,
         MoneyAmount = 1500,
         NoSeat = noSeat
     };
     serverEntity.Send(cmd);
     var response = serverEntity.WaitForNextCommand<PlayerSitInResponse>();
     Assert.AreEqual(noSeat,response.NoSeat);
     return noSeat;
 }
 private void BeAwareOfOtherPlayerSatIn(RemoteTcpServer serverEntity, int tableId, RemoteTcpServer other, int noSeat)
 {
     var response = serverEntity.WaitForNextCommand<SeatUpdatedCommand>();
     Assert.AreEqual(other.Name, response.Seat.Player.Name);
     Assert.AreEqual(tableId, response.TableId);
     Assert.AreEqual(noSeat, response.Seat.NoSeat);
 }
 private void PlayMoney(RemoteTcpServer serverEntity, int tableId, int money)
 {
     var cmd = new PlayerPlayMoneyCommand()
     {
         TableId = tableId,
         AmountPlayed = money
     };
     serverEntity.Send(cmd);
 }
 private int GameIsStarting(RemoteTcpServer serverEntity)
 {
     ReceiveTableInfo(serverEntity);
     var response = serverEntity.WaitForNextCommand<GameStartedCommand>();
     Assert.AreNotEqual(0,response.NeededBlind);
     return response.NeededBlind;
 }
 private void BeAwareOfHoleCardDistribution(RemoteTcpServer serverEntity, int tableId, params int[] seats)
 {
     HashSet<int> remaining = new HashSet<int>(seats);
     while (remaining.Any())
     {
         var response = serverEntity.WaitForNextCommand<PlayerHoleCardsChangedCommand>();
         Assert.AreEqual(tableId, response.TableId);
         Assert.IsTrue(remaining.Contains(response.NoSeat));
         remaining.Remove(response.NoSeat);
     }
 }
 private void BeAwareOfBettingRoundStarted(RemoteTcpServer serverEntity, int tableId, int round)
 {
     var response = serverEntity.WaitForNextCommand<BetTurnStartedCommand>();
     Assert.AreEqual(tableId, response.TableId);
     Assert.AreEqual(round, response.BettingRoundId);
 }
 private void BeAwareOfWhoItIsToPlay(RemoteTcpServer serverEntity, int tableId, int noSeat)
 {
     var response = serverEntity.WaitForNextCommand<PlayerTurnBeganCommand>();
     Assert.AreEqual(tableId, response.TableId);
     Assert.AreEqual(noSeat, response.NoSeat);
 }
 private void SitOut(RemoteTcpServer serverEntity, int tableId, int noSeat)
 {
     var cmd = new PlayerSitOutCommand()
     {
         TableId = tableId
     };
     serverEntity.Send(cmd);
     var response = serverEntity.WaitForNextCommand<PlayerSitOutResponse>();
     Assert.IsTrue(response.Success);
 }
 private int CreateTable(RemoteTcpServer serverEntity)
 {
     var cmd = new CreateTableCommand()
     {
         Params = new TableParams()
         {
             Blind = new BlindOptionsBlinds()
             {
                 MoneyUnit = 10
             },
             GameType = GameTypeEnum.Holdem,
             MoneyUnit = 10,
             Limit = new LimitOptionsNoLimit(),
             Lobby = new LobbyOptionsQuickMode()
             {
                 StartingAmount = 1500
             },
             MaxPlayers = 10,
             MinPlayersToStart = 2,
             TableName = "Table One",
             Variant = "Wtf Is this field",
             WaitingTimes = new ConfigurableWaitingTimes()
             {
                 AfterBoardDealed = 0,
                 AfterPlayerAction = 0,
                 AfterPotWon = 0
             }
         }
     };
     serverEntity.Send(cmd);
     var response = serverEntity.WaitForNextCommand<CreateTableResponse>();
     Assert.AreNotEqual(response.IdTable,-1);
     return response.IdTable;
 }
 private void ReceiveTableInfo(RemoteTcpServer serverEntity)
 {
     serverEntity.WaitForNextCommand<TableInfoCommand>();
 }
 private int CreateTable(RemoteTcpServer serverEntity)
 {
     var cmd = new CreateTableCommand()
     {
         Params = new TableParams()
         {
             Blind = BlindTypeEnum.Blinds,
             Options = new GameTypeOptionsCommunity(),
             GameSize = 10,
             Limit = LimitTypeEnum.NoLimit,
             Lobby = new LobbyOptionsQuickMode()
             {
                 StartingAmount = 1500
             },
             MaxPlayers = 10,
             MinPlayersToStart = 2,
             TableName = "Table One",
             Variant = GameSubTypeEnum.TexasHoldem,
             WaitingTimes = new ConfigurableWaitingTimes()
             {
                 AfterBoardDealed = 0,
                 AfterPlayerAction = 0,
                 AfterPotWon = 0
             }
         }
     };
     serverEntity.Send(cmd);
     var response = serverEntity.WaitForNextCommand<CreateTableResponse>();
     Assert.AreNotEqual(response.IdTable,-1);
     return response.IdTable;
 }
 private void BeAwareOfMoneyPlayed(RemoteTcpServer serverEntity, int tableId, int seat)
 {
     var responseTurnEnded = serverEntity.WaitForNextCommand<PlayerTurnEndedCommand>();
     Assert.AreEqual(tableId, responseTurnEnded.TableId);
     Assert.AreEqual(seat, responseTurnEnded.NoSeat);
 }
 private void IdentifyAs(RemoteTcpServer serverEntity, string name)
 {
     var cmd = new IdentifyCommand()
     {
         Name = name
     };
     serverEntity.Send(cmd);
     var response = serverEntity.WaitForNextCommand<IdentifyResponse>();
     Assert.IsTrue(response.Success);
     serverEntity.Name = name;
 }
 private void BeAwareOfOtherPlayerJoined(RemoteTcpServer serverEntity, RemoteTcpServer other)
 {
     var response = serverEntity.WaitForNextCommand<PlayerJoinedCommand>();
     Assert.AreEqual(other.Name,response.PlayerName);
 }