Quick Start Source Code - samuelneff/docs GitHub Wiki

<style></style>

NUnit Quick Start

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
⚠️ **GitHub.com Fallback** ⚠️