5 unit tests covering a single line of code:
[TestFixture]
public class A_SwissRounding
{
private SwissRounding _rounding = new SwissRounding();
[Test]
public void Should_round_down_to_zero_when_having_zero_to_two_and_a_half()
{
Assert.AreEqual(1.00m, _rounding.Round(1.0010m));
Assert.AreEqual(1.00m, _rounding.Round(1.0249m));
}
[Test]
public void Should_round_up_to_five_when_having_two_and_a_half_to_five()
{
Assert.AreEqual(1.05m, _rounding.Round(1.0250m));
Assert.AreEqual(1.05m, _rounding.Round(1.0490m));
}
[Test]
public void Should_round_down_to_5_when_having_five_to_seven_and_a_half()
{
Assert.AreEqual(1.05m, _rounding.Round(1.0510m));
Assert.AreEqual(1.05m, _rounding.Round(1.0749m));
}
[Test]
public void Should_round_up_to_10_when_having_seven_and_a_half_to_ten()
{
Assert.AreEqual(1.10m, _rounding.Round(1.0760m));
Assert.AreEqual(1.10m, _rounding.Round(1.0990m));
}
[Test]
public void Should_not_round_multiples_of_five()
{
Assert.AreEqual(1.00m, _rounding.Round(1.0000m));
Assert.AreEqual(1.05m, _rounding.Round(1.0500m));
Assert.AreEqual(1.10m, _rounding.Round(1.1000m));
}
}
public class SwissRounding
{
public decimal Round(decimal value)
{
return Math.Round(value*20, MidpointRounding.AwayFromZero)/20;
}
}
:-)




