make abstract test case for both implementations