TDD example solving the undo-redo stack, every commit is a step in the hole tdd process for solving the problem