Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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());
        }
Пример #4
0
        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));
        }
Пример #5
0
        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());
        }
Пример #6
0
        public void Push_AddsAllCards()
        {
            var position = _f.Create <PilePosition>();
            var pile     = new Pile();

            pile.Push(new[] { RndCard(), RndCard() }, position);

            Assert.AreEqual(2, pile.Size);
        }
Пример #7
0
        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());
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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());
        }
Пример #11
0
        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));
        }
Пример #12
0
        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");
        }
Пример #13
0
        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");
        }