Yesterday in the Barcelona Software Craftsmanship coding dojo we did the Binary Search Tree kata.
Raúl Lorca and I paired using TDD in C# to get to a pretty OO solution.
We didn't finish the exercise. We got to create the binary search tree but we didn't have time to code the in-order depth-first traversal.
Well, it doesn't matter. The important thing is that we practiced TDD, recursion and OO by test-driving a recursive data structure.
Today, with a bit more of time, I did the the whole kata in Ruby.
These are the resulting tests, after deleting some I used as scaffolding to get to the final version of the code (check the commits if you want to see the evolution of the tests):
And this is the final version of the code:
To document the whole TDD process I committed the code after every passing test and every refactoring.
You can check the commits step by step here and all the code in this repository in GitHub.
I had done the same exercise in Clojure several weeks ago as part of the Exercism problems. Compare the code there with this one if you like.