public void PokerFaceMain_FileHasTwoValidCardHands_EvaluatesBothHandsAndEnds() { using (var sw = new StringWriter()) { Console.SetOut(sw); // Arrange const string cardHandLine1 = "2D 3D 4D 5D 6D"; const string cardHandLine2 = "2C 3C 4C 5C 6C"; _cardHandsFileReader.FileExists().Returns(true); _cardHandsFileReader.AtEndOfFile().Returns(false, false, true); _cardHandsFileReader.ReadNextCardHandLine().Returns(cardHandLine1, cardHandLine2); var pokerFaceMain = new PokerFaceMain(_cardHandsFileReader, _pokerHandNamer); // Act var result = pokerFaceMain.EvaluateHands(); // Assert Assert.AreEqual((int)Constants.ExitStatusCode.Success, result); _cardHandsFileReader.Received(1).CloseFile(); Assert.AreEqual("2D 3D 4D 5D 6D => Straight flush\r\n2C 3C 4C 5C 6C => Straight flush\r\n", sw.ToString()); } Console.SetOut(new StreamWriter(Console.OpenStandardOutput())); }
public int EvaluateHands() { if (!_cardHandsFileReader.FileExists()) { Console.WriteLine(Constants.ErrorMessageInputFileNotFound); return((int)Constants.ExitStatusCode.InputFileNotFound); } _cardHandsFileReader.OpenFile(); while (!_cardHandsFileReader.AtEndOfFile()) { var cardHandString = _cardHandsFileReader.ReadNextCardHandLine(); var cardHand = MapStringToCardHand.Map(cardHandString); if (cardHand != null) { var pokerHandName = _pokerHandNamer.GetPokerHandNameForCardHand(cardHand); Console.WriteLine($"{cardHandString} => {pokerHandName}"); } else { Console.WriteLine($"Error: Could not construct valid card hand from line: {cardHandString}"); } } _cardHandsFileReader.CloseFile(); return((int)Constants.ExitStatusCode.Success); }