a basic testing framework