implement simple functional test framework