private async void WaitForMessage(NetworkStream stream) { while (true) { var message = await NetworkHelper.ReceiveMessage(stream).ConfigureAwait(false); message.LastPlayBy = LastPlayerPlayed; if (message.MessageType == NetworkHelper.MessageType.Pass) { if ((message.Player !.PlayerNumber + 1) % 4 == LastPlayerPlayed) { RuleHandler.FreeTurn(); } foreach (var clientStream in ClientStreams) { NetworkHelper.SendMessage(clientStream, message); } } else { var validPlay = RuleHandler.IsValidPlay(message.Hand !, Pile); if (validPlay) { Pile = message.Hand; foreach (var clientStream in ClientStreams) { NetworkHelper.SendMessage(clientStream, message); } LastPlayerPlayed = message.Player !.PlayerNumber; } } } }
public void IsValidPlay_UsingEqualSingleLowerSuit_Fail() { RuleHandler sut = new RuleHandler(); List <Card> cards = new List <Card>(); sut.FreeTurn(); cards.Add(new Card("J", 8, "Clubs", 1)); sut.IsValidPlay(cards, null); var cards1 = new List <Card> { new Card("J", 8, "Spades", 0) }; bool result = sut.IsValidPlay(cards1, cards); Assert.IsFalse(result); }
public void IsValidPlay_UsingTripleOnSingleAce_Success() { RuleHandler sut = new RuleHandler(); sut.FreeTurn(); List <Card> cards = new List <Card> { new Card("A", 11, "Spades", 0) }; sut.IsValidPlay(cards, null); var cards1 = new List <Card> { new Card("4", 1, "Clubs", 1), new Card("4", 1, "Spades", 0), new Card("4", 1, "Diamonds", 2) }; bool result = sut.IsValidPlay(cards1, cards); Assert.IsTrue(result); }