Test: 1101
TPP: unconditional -> if (the new execution path is nil -> constant)
Test: 2101, rename test to thousands_and_hundreds
TPP: constant -> scala (1 -> number / 1000)
Test: 1000101
TPP: expression -> function (1000 -> closestCountingUnit(number))
Test: 1201
TPP: expression -> function (1 -> number % closestCountingUnit(number) / 100)
Test:1001001
TPP: expression -> function (100 -> closestCountingUnit(number % closestCountingUnit(number)))
And, I refactor the test name to two_counting_unit_words_and_one_number_word
This is a refactoring actually. It seems to be a big change but all it does is to replace the entire first if path with the existing recursive call.
In fact, all previous transformations are done to make the code duplication more obvious instead of refactor the code right away
Test: 21000, and test name finally renamed to two number words and one counting unit word
TPP: expression -> function (NUMBER_TO_ONE_WORD.get -> convertWithinCountingUnit)

And, this Kata is done as long as not keep adding other counting unit larger than million. :)