split out test cases and provide interface to ensure that nevessary tests are defined