The Art of Unit Testing: with examples in C#