public void Push_CardInstanceAlreadyInPile_Throws() { var position = _f.Create <PilePosition>(); var pile = new Pile(); var card = RndCard(); pile.Push(card, position); var ex = Assert.Catch <ArgumentException>(() => pile.Push(card, position)); Assert.That(ex.Message, Contains.Substring("instance already in pile").IgnoreCase); }
public void Push_Bottom_AddedCardsAreLast() { var pile = new Pile(new[] { RndCard(), RndCard(), RndCard() }); var cards = new[] { RndCard(), RndCard() }; pile.Push(cards, PilePosition.Bottom); CollectionAssert.AreEqual(cards, pile.TakeLast(2)); }
public void Push_Bottom_AddedCardIsLast() { var pile = new Pile(new[] { RndCard(), RndCard(), RndCard() }); var card = RndCard(); pile.Push(card, PilePosition.Bottom); Assert.AreSame(card, pile.Last()); }
public void Push_Top_AddedCardsAreFirst() { var pile = new Pile(new[] { RndCard(), RndCard(), RndCard() }); var cards = new[] { RndCard(), RndCard() }; pile.Push(cards, PilePosition.Top); CollectionAssert.AreEqual(cards, pile.Take(2)); }
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_AddsAllCards() { var position = _f.Create <PilePosition>(); var pile = new Pile(); pile.Push(new[] { RndCard(), RndCard() }, position); Assert.AreEqual(2, pile.Size); }
public void Push_Middle_OneInPile_AddedCardIsLast() { var pile = new Pile(new[] { RndCard() }); var card = RndCard(); pile.Push(card, PilePosition.Middle); Assert.AreSame(card, pile.Last()); }
public void Push_AddsCard() { var position = _f.Create <PilePosition>(); var pile = new Pile(); var card = RndCard(); pile.Push(card, position); Assert.AreEqual(1, pile.Size); }
public void Push_DuplicateOfCardInstance_Throws() { var position = _f.Create <PilePosition>(); var pile = new Pile(); var card = RndCard(); var ex = Assert.Catch <ArgumentException>(() => pile.Push(new[] { card, card }, position)); Assert.That(ex.Message, Contains.Substring("Duplicate instances").IgnoreCase); }
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 Push_Middle_AddedCardsAllInRandomPlacesButNotFirstOrLast() { var dict = new Dictionary <int, int>(); for (var i = 0; i < 50; i++) { var pile = new Pile(new[] { RndCard(), RndCard(), RndCard() }); var cards = new[] { RndCard(), RndCard() }; pile.Push(cards, PilePosition.Middle); IncValueForKey(dict, pile.GetIndexOf(cards[0])); IncValueForKey(dict, pile.GetIndexOf(cards[1])); } Assert.That(dict.Select(x => x.Value), Has.All.GreaterThan(1)); Assert.IsFalse(dict.ContainsKey(0), "not first"); Assert.IsFalse(dict.ContainsKey(4), "not last"); }
public void Push_Middle_AddedCardAlwaysInDifferentPlace() { var addedCard = RndCard(); var dict = new Dictionary <int, int>(); for (var i = 0; i < 50; i++) { var pile = new Pile(Enumerable.Repeat(RndCard(), 4)); pile.Push(addedCard, PilePosition.Middle); IncValueForKey(dict, pile.GetIndexOf(addedCard)); } Assert.That(dict.Select(x => x.Value), Has.All.GreaterThan(1)); Assert.IsFalse(dict.ContainsKey(0), "not first"); Assert.IsFalse(dict.ContainsKey(4), "not last"); }