public void IfCardIsDrawnCountDecreases()
        {
            var cards = GetCards(10);
            var deck  = new Trekstapel(cards);

            deck.TryDraw(out _);
            Assert.AreEqual(9, deck.Count);

            deck.TryDraw(out _);
            Assert.AreEqual(8, deck.Count);
        }
        public void TryDrawReturnsFalseIfAflegstapelIsEmpty()
        {
            var cards = GetCards(0);
            var deck  = new Trekstapel(cards);

            Assert.IsFalse(deck.TryDraw(out _));
        }
        public void TryDrawReturnsTrueIfCardIsDrawn()
        {
            var cards = GetCards(1);
            var deck  = new Trekstapel(cards);

            Assert.IsTrue(deck.TryDraw(out _));
        }
        public void DeckGeeftKaartenTerugInVolgordeVanAanleveren()
        {
            var cards = GetCards(10);
            var deck  = new Trekstapel(cards);

            deck.TryDraw(out var drawnCard);

            Assert.IsTrue(ReferenceEquals(cards[0], drawnCard));

            deck.TryDraw(out drawnCard);
            Assert.IsTrue(ReferenceEquals(cards[1], drawnCard));
        }
        public void TrekstapelDoesNotFireTrekstapelEmptiedEventWhenDeckIsAlreadyEmpty()
        {
            var deck = new Trekstapel(GetCards(0));

            AssertExtension.DoesNotTriggerEvent(x => deck.TrekstapelEmptied += x, () => deck.TryDraw(out _));
        }
        public void TrekstapelDoesNotFireTrekstapelEmptiedEventWhenCardIsDrawnWithMoreCardsLeft()
        {
            var deck = new Trekstapel(GetCards(2));

            AssertExtension.DoesNotTriggerEvent(x => deck.TrekstapelEmptied += x, () => deck.TryDraw(out _));
        }
        public void TrekstapelFiresTrekstapelEmptiedEventWhenLastCardIsDrawn()
        {
            var deck = new Trekstapel(GetCards(1));

            AssertExtension.TriggersEvent(x => deck.TrekstapelEmptied += x, () => deck.TryDraw(out _));
        }