Ejemplo n.º 1
0
        public void WhenTry_ToWithdrawMoreThanAvailableBalance_ItThrowsInvalidOperationException()
        {
            Card card = CreateValidCard();

            card.TopupBy(1000, validPin);
            Assert.Throws <InvalidOperationException>(() => card.WithdrawBy(2000, validPin));
        }
Ejemplo n.º 2
0
        public void Given_ValidCard_It_Should_TopUp_Balance()
        {
            Card card = CreateValidCard();

            Assert.That(card.GetBalance() == 0);

            Assert.That(card.TopupBy(100, validPin).GetBalance(), Is.EqualTo(100));
        }
Ejemplo n.º 3
0
        public void Given_CardHasEnoughBalance_ItShouldBeUsedByManyPlaces_AtSameTime()
        {
            Card card = CreateValidCard();

            card.TopupBy(1000, validPin);

            Parallel.Invoke(() => card.WithdrawBy(100, validPin),
                            () => card.WithdrawBy(100, validPin),
                            () => card.WithdrawBy(100, validPin),
                            () => card.WithdrawBy(100, validPin),
                            () => card.WithdrawBy(100, validPin),
                            () => card.WithdrawBy(100, validPin));

            Assert.That(card.GetBalance(), Is.EqualTo(400));
        }