Thoughtworks Interview Question

Coding challenge. Use OOP and TDD to succeed.