public void Pop_Middle_OneLessThanCardsInPile_AlsoTakesCardFromHeadOrTail() { var source = new[] { RndCard(1), RndCard(2), RndCard(3), RndCard(4) }; var pile = new Pile(source); var result = pile.Pop(PilePosition.Middle, 3); Assert.AreEqual(3, result.Count, "result size"); Assert.AreEqual(1, pile.Size); Assert.IsTrue(pile.First().Rank.Value == 1 || pile.First().Rank.Value == 4); }
public void Push_Top_AddedCardIsFirst() { var pile = new Pile(new[] { RndCard(), RndCard(), RndCard() }); var card = RndCard(); pile.Push(card, PilePosition.Top); Assert.AreSame(card, pile.First()); }
public void Push_EmptyPile_Ok() { var position = _f.Create <PilePosition>(); var pile = new Pile(); var card = RndCard(); pile.Push(card, position); Assert.AreSame(card, pile.First()); }
public void Push_Middle_TwoInPile_AddedCardAlwaysIsInMiddle() { var pile = new Pile(new[] { RndCard(), RndCard() }); var card = RndCard(); pile.Push(card, PilePosition.Middle); Assert.AreSame(pile.ElementAt(1), card); Assert.IsFalse(ReferenceEquals(pile.First(), card)); Assert.IsFalse(ReferenceEquals(pile.Last(), card)); }
public void Pop_Middle_TakesOrderedGroup() { var source = new[] { RndCard(1), RndCard(2), RndCard(3), RndCard(4) }; var pile = new Pile(source); using (Random.Returing(new[] { 2 })) { var result = pile.Pop(PilePosition.Middle, 2); CollectionAssert.AreEqual(new[] { source[1], source[2] }, result); Assert.AreEqual(2, result.Count, "result size"); Assert.AreEqual(2, pile.Size); Assert.AreSame(source[0], pile.First(), "first"); Assert.AreSame(source[3], pile.Last(), "last"); } }
public override Card Peek(Pile pile) { return(pile.First()); }