Move from hacking a main file to actual tests

Tests have their own implementations, as we're mostly testing how to use the
library, and how to setup all the command patterns, not the logic of the
implementations themselves.