Exemplo n.º 1
0
        public void can_create_an_empty_hand()
        {
            // Arrange

            // Act
            IBlackjackHand hand = new PlayerHand();

            // Assert
            hand.GetCards().Should().Not.Be.Null();
            hand.GetCards().Count().Should().Equal(0);
        }
Exemplo n.º 2
0
        public void can_add_a_card_to_an_empty_hand()
        {
            // Arrange
            var card = Substitute.For<IBlackjackCard>();
            IBlackjackHand hand = new PlayerHand();

            // Act
            hand.AddCard(card);

            // Assert
            hand.GetCards().Should().Not.Be.Null();
            hand.GetCards().Count().Should().Equal(1);
        }
Exemplo n.º 3
0
        public void can_add_a_second_card_to_a_hand()
        {
            // Arrange
            var card1 = Substitute.For<IBlackjackCard>();
            var card2 = Substitute.For<IBlackjackCard>();
            IBlackjackHand hand = new PlayerHand();

            // Act
            hand.AddCard(card1);
            hand.AddCard(card2);

            // Assert
            hand.GetCards().Should().Not.Be.Null();
            hand.GetCards().Count().Should().Equal(2);
            hand.GetCards().ElementAt(0).Should().Be.SameAs(card1);
            hand.GetCards().ElementAt(1).Should().Be.SameAs(card2);
        }
Exemplo n.º 4
0
        public void bet_switches_to_blackjackbet_when_hand_has_blackjack()
        {
            // Arrange
            var handValueCalculator = Substitute.For<IHandValueCalculator>();
            var card1 = Substitute.For<IAceCard>();
            card1.Value.Returns(11);
            var card2 = Substitute.For<IBlackjackCard>();
            card2.Value.Returns(10);
            var anteBet = Substitute.For<AnteBet>(10.0);

            IPlayerHand hand = new PlayerHand();
            handValueCalculator.Value(hand).Returns(21);
            hand.HandValueCalculator = handValueCalculator;

            hand.Bet = anteBet;
            hand.AddCard(card1);
            hand.AddCard(card2);

            // Act
            var bet = hand.Bet;

            // Assert
            bet.Should().Be.OfType<BlackjackBet>();
        }
Exemplo n.º 5
0
        public void split_hand_marked_ineligible_for_blackjack()
        {
            // Arrange
            var hand = new PlayerHand();

            hand.EligibleForBlackjack.Should().Be.True();
            hand.CreatedFromSplit = true;
            hand.EligibleForBlackjack.Should().Be.True();

            var card = Substitute.For<IBlackjackCard>();

            // Act
            hand.AddCard(card);

            // Assert
            hand.EligibleForBlackjack.Should().Be.False();
        }
Exemplo n.º 6
0
        public void returns_value()
        {
            // Arrange
            var handValueCalculator = Substitute.For<IHandValueCalculator>();

            IBlackjackHand hand = new PlayerHand();
            handValueCalculator.Value(hand).Returns(13);

            hand.HandValueCalculator = handValueCalculator;

            // Act
            var hardTotal = hand.Value();

            // Assert
            hardTotal.Should().Equal(13);
        }
Exemplo n.º 7
0
        public void hand_split_result_in_two_hands_of_one_card_each()
        {
            // Arrange
            var hand = new PlayerHand();
            var card1 = Substitute.For<IBlackjackCard>();
            card1.Value.Returns(5);
            var card2 = Substitute.For<IBlackjackCard>();
            card2.Value.Returns(5);

            hand.AddCard(card1);
            hand.AddCard(card2);

            var hand2 = new PlayerHand();

            // Act
            hand.SplitInto(hand2);

            // Assert
            hand.GetCards().Count.Should().Equal(1);
            hand2.GetCards().Count.Should().Equal(1);

            hand.GetCards()[0].Should().Be.SameAs(card1);
            hand2.GetCards()[0].Should().Be.SameAs(card2);
        }
Exemplo n.º 8
0
        public void hand_shows_not_busted_when_value_under_22()
        {
            // Arrange
            var handValueCalculator = Substitute.For<IHandValueCalculator>();

            IBlackjackHand hand = new PlayerHand();
            handValueCalculator.Value(hand).Returns(20);

            hand.HandValueCalculator = handValueCalculator;

            // Act
            var busted = hand.Busted;

            // Assert
            busted.Should().Be.False();
        }
Exemplo n.º 9
0
        public void hand_shows_blackjack_with_initial_hand_value_of_21()
        {
            // Arrange
            var handValueCalculator = Substitute.For<IHandValueCalculator>();
            var card1 = Substitute.For<IAceCard>();
            card1.Value.Returns(11);
            var card2 = Substitute.For<IBlackjackCard>();
            card2.Value.Returns(10);

            IPlayerHand hand = new PlayerHand();
            handValueCalculator.Value(hand).Returns(21);
            hand.HandValueCalculator = handValueCalculator;

            hand.AddCard(card1);
            hand.AddCard(card2);

            // Act
            var hasBlackJack = hand.HasBlackjack;

            // Assert
            hasBlackJack.Should().Be.True();
        }
Exemplo n.º 10
0
        public void hand_does_not_return_blackjack_for_any_cards_totaling_less_than_21()
        {
            // Arrange
            var handValueCalculator = Substitute.For<IHandValueCalculator>();
            var argHand = Substitute.For<IBlackjackHand>();

            handValueCalculator.Value(argHand).ReturnsForAnyArgs(10, 19);

            var card1 = Substitute.For<IBlackjackCard>();
            var card2 = Substitute.For<IBlackjackCard>();

            IBlackjackHand hand = new PlayerHand();

            // Act
            hand.AddCard(card1);
            // Assert
            hand.HasBlackjack.Should().Be.False();
            hand.EligibleForBlackjack.Should().Be.True();

            // Act
            hand.AddCard(card2);
            // Assert
            hand.HasBlackjack.Should().Be.False();
            hand.EligibleForBlackjack.Should().Be.False();
        }