State Pattern with TDD