A state machine is a very specific way to organize the logic in your application. In this learning hour we practice building the state machine iteratively and incrementally with TDD.
We’re assuming the participants already know about making a test list - so we ask them to make a test list for a state machine with two states and two transitions:
There is some starting code for a Lift Button. On the branch ‘starting_point_applied_tdd_1’ you will find a partial implementation of a state machine, together with a half-finished test list. The idea is to get the participants going more quickly developing a finite state machine by having them continue from this point.
In this part of the learning hour we need to go through the code, explain what’s already been done, or perhaps better, demo getting to this point.
Let the participants take over the code from this point and continue to develop the finite state machine.
Discuss what it was like developing a FSM using TDD. Would this approach scale to larger and more complex state machines?