typedef bool (*TestFunc)(); struct TestItem { const char *name; TestFunc func; }; #define TEST_ITEM(name) { #name, &Test ##name, } bool TestArmEmitter(); bool TestArm64Emitter(); bool TestX64Emitter(); TestItem availableTests[] = { #if defined(ARM64) || defined(_M_X64) || defined(_M_IX86) TEST_ITEM(Arm64Emitter), #endif #if defined(ARM) || defined(_M_X64) || defined(_M_IX86) TEST_ITEM(ArmEmitter), #endif #if defined(_M_X64) || defined(_M_IX86) TEST_ITEM(X64Emitter), #endif TEST_ITEM(VertexJit), TEST_ITEM(Asin), TEST_ITEM(SinCos), TEST_ITEM(VFPUSinCos), TEST_ITEM(MathUtil), TEST_ITEM(Parsers), TEST_ITEM(Jit), TEST_ITEM(MatrixTranspose),
5,9,5,1,3,1,1,4,7,2,1,8,3,1,5,2}; static int64_t test_int64 [] = {6,5,4,3,2,1}; static char *test_str [] = {"the", "quick", "brown", "fox", "jumped"}; #define TEST_ITEM_INT(x) { x, #x, (sizeof(x)/sizeof(x[0])), sizeof(x[0]), &cmpint } #define TEST_ITEM(x,cmp) { x, #x, (sizeof(x)/sizeof(x[0])), sizeof(x[0]), (cmp) } static struct testitem_s test_cases[] = { TEST_ITEM_INT( test_even ), TEST_ITEM_INT( test_odd ), TEST_ITEM_INT( test_pow2 ), TEST_ITEM_INT( test_sorted ), TEST_ITEM_INT( test_dup ), TEST_ITEM_INT( test_ilv ), TEST_ITEM_INT( test_rand ), TEST_ITEM( test_int64, &cmpint64 ), TEST_ITEM( test_str, &cmpstr ), {NULL, NULL, 0, 0, NULL} }; // ============================================================================= // run test cases for a single sort function int test_sort(sortfn_t sortfn) { void *list_sort; void *list_stdsort; size_t list_sort_size; size_t list_stdsort_size; uint32_t list_size; struct testitem_s *test;