public void AskTest() { Shoes shoes = new Shoes(); Dealer dealer = new Dealer(); shoes.Fill(8); Gamester player = new Gamester(); List <Gamester> testPlayers = new List <Gamester> { player }; PlayerMove[,] testCondition = new PlayerMove[1, 4] { { 0, 0, 0, 0 } }; for (int j = 0; j < 3; j++) { foreach (PlayerMove move in Enum.GetValues(typeof(PlayerMove))) { if (move == PlayerMove.Show) { continue; } testCondition[0, j] = move; player.ChangeBank(1000); player.ReceiveCard(new Card(CardSuit.Clubs, (CardRank)10), j); for (int k = 0; k < 4; k++) { player.SetBet(k, (int)move * 100); } switch (move) { case PlayerMove.Pass: { dealer.Ask(testPlayers, shoes, testCondition); if (player[j].Count != 1 || player.GetBet(j) != (int)move * 100) { Assert.Fail("1"); } break; } case PlayerMove.Call: { dealer.Ask(testPlayers, shoes, testCondition); if (player[j].Count != 2 || player.GetBet(j) != (int)move * 100) { Assert.Fail("2"); } break; } case PlayerMove.Double: { dealer.Ask(testPlayers, shoes, testCondition); if (player[j].Count != 2 || player.GetBet(j) != (int)move * 200) { Assert.Fail("3"); } break; } case PlayerMove.Split: { player.ReceiveCard(new Card(CardSuit.Diamonds, (CardRank)10), j); dealer.Ask(testPlayers, shoes, testCondition); if (player.GetBet(j + 1) != (int)move * 100 || player[j][0] == new Card(CardSuit.Clubs, (CardRank)10) || player[j + 1][0] == new Card(CardSuit.Diamonds, (CardRank)10) || player[j].Count != player[j + 1].Count) { Assert.Fail("4"); } break; } case PlayerMove.Surrender: { dealer.Ask(testPlayers, shoes, testCondition); if (player[j].Count != 1 || player.GetBet(j) != 0) { Assert.Fail("5"); } break; } } dealer.GetCardsBack(testPlayers); } } Assert.Pass(); }