public void FindDrawnPlayers_ShouldReturnHighestDrawnPlayers( int[] ranks, int[] indexOfDrawnPlayers) { // Arrange var players = new List <Player>(); foreach (var rank in ranks) { players.Add(new Player(rank.ToString()) { CurrentCard = new Card(Suit.Clubs, rank) }); } var expected = new List <Player>(); foreach (var index in indexOfDrawnPlayers) { expected.Add(players[index]); } // Act var actual = _sut.FindDrawnPlayers(players); // Assert Assert.Equal(expected, actual); }
public void Play() { while (!ReachedMinimumHandCount(Players)) { var roundCards = new List <Card>(); var roundWinner = FindRoundWinner(roundCards, Players); while (roundWinner == null) { var drawnPlayers = _drawService.FindDrawnPlayers(Players); _outputProvider($"There was a draw with these players: {string.Join(", ", drawnPlayers)}"); _warService.GoToWar(roundCards, drawnPlayers, CardsDealtInWar); roundWinner = FindRoundWinner(roundCards, drawnPlayers); } RoundWonProcedure(roundWinner, roundCards); } var finalWinner = _winnerService.DetermineFinalWinner(Players); _outputProvider($"{finalWinner} won with a total of {finalWinner.Score} wins" + $" and a hand of {finalWinner.Hand.Count} cards"); }