Quick Start Source Code - samuelneff/docs GitHub Wiki
<style></style>
using System; using NUnit.Framework;namespace Bank { public class Account { private decimal balance; private decimal minimumBalance = 10m;
public void Deposit(decimal amount) { balance += amount; } public void Withdraw(decimal amount) { balance -= amount; } public void TransferFunds(Account destination, decimal amount) { if (balance - amount < minimumBalance) throw new InsufficientFundsException(); destination.Deposit(amount); Withdraw(amount); } public decimal Balance { get { return balance; } } public decimal MinimumBalance { get { return minimumBalance; } }
}
public class InsufficientFundsException : ApplicationException { }
[TestFixture] public class AccountTest { Account source; Account destination;
[SetUp] public void Init() { source = new Account(); source.Deposit(200m); destination = new Account(); destination.Deposit(150m); } [Test] public void TransferFunds() { source.TransferFunds(destination, 100m); Assert.AreEqual(250m, destination.Balance); Assert.AreEqual(100m, source.Balance); } [Test] [ExpectedException(typeof(InsufficientFundsException))] public void TransferWithInsufficientFunds() { source.TransferFunds(destination, 300m); } [Test] [Ignore("Decide how to implement transaction management")] public void TransferWithInsufficientFundsAtomicity() { try { source.TransferFunds(destination, 300m); } catch (InsufficientFundsException expected) { } Assert.AreEqual(200m, source.Balance); Assert.AreEqual(150m, destination.Balance); }
} }
Listing - QuickStart Example