public void WhenTry_ToWithdrawMoreThanAvailableBalance_ItThrowsInvalidOperationException() { Card card = CreateValidCard(); card.TopupBy(1000, validPin); Assert.Throws <InvalidOperationException>(() => card.WithdrawBy(2000, validPin)); }
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)); }