test-driven-development

Write the test first, watch it fail, write minimal code to pass