示例#1
0
        public void WhenTry_ToWithdrawMoreThanAvailableBalance_ItThrowsInvalidOperationException()
        {
            Card card = CreateValidCard();

            card.TopupBy(1000, validPin);
            Assert.Throws <InvalidOperationException>(() => card.WithdrawBy(2000, validPin));
        }
示例#2
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));
        }