diff options
Diffstat (limited to 'test/src/testalgo.c')
| -rw-r--r-- | test/src/testalgo.c | 283 |
1 files changed, 142 insertions, 141 deletions
diff --git a/test/src/testalgo.c b/test/src/testalgo.c index 1eb8460..63c1879 100644 --- a/test/src/testalgo.c +++ b/test/src/testalgo.c @@ -4,17 +4,17 @@ #include <stdlib.h> -static int int_equal(const void *lhs, - const void *rhs) +static int DBG_IntEqual(const void *lhs, + const void *rhs) { return *(const int*)lhs - *(const int*)rhs; } -static int verify_partition(size_t index, - int pivot, - int *array, - size_t size) +static int DBG_VerifyPartition(size_t index, + int pivot, + int *array, + size_t size) { size_t i; @@ -30,8 +30,8 @@ static int verify_partition(size_t index, } -static int verify_heap(int *array, - size_t size) +static int DBG_VerifyHeap(int *array, + size_t size) { size_t i, left, right; @@ -50,7 +50,7 @@ static int verify_heap(int *array, } -static int reference_rand(void) +static int DBG_ReferenceRand(void) { static uint32_t next = 2025; next = next * 1103515245 + 12345; @@ -58,7 +58,8 @@ static int reference_rand(void) } -static void reference_sort(int *array, size_t size) +static void DBG_ReferenceSort(int *array, + size_t size) { size_t i, j; int tmp; @@ -79,10 +80,10 @@ static void reference_sort(int *array, size_t size) } -static void fill_arrays(int *array, - int *reference, - size_t size, - int mask) +static void DBG_FillArrays(int *array, + int *reference, + size_t size, + int mask) { size_t i; int negate; @@ -95,7 +96,7 @@ static void fill_arrays(int *array, /* Fill the array */ for (i = 0; i < size; ++i) { - array[i] = reference_rand(); + array[i] = DBG_ReferenceRand(); if (mask > 1) array[i] = array[i] % mask; @@ -109,19 +110,19 @@ static void fill_arrays(int *array, } -static int check_sort(void) +static int CheckSort(void) { size_t sizes[] = {1, 2, 3, 5, 11, 23, 41, 79, 163, 317, 0}, *size; int reference[317], data[317]; /* Test empty array and one element arrays */ data[0] = 1; data[1] = 2; data[2] = 3; - bh_sort(data, 0, sizeof(int), int_equal); + BH_Sort(data, 0, sizeof(int), DBG_IntEqual); BH_VERIFY(data[0] == 1); BH_VERIFY(data[1] == 2); BH_VERIFY(data[2] == 3); - bh_sort(data, 1, sizeof(int), int_equal); + BH_Sort(data, 1, sizeof(int), DBG_IntEqual); BH_VERIFY(data[0] == 1); BH_VERIFY(data[1] == 2); BH_VERIFY(data[2] == 3); @@ -129,27 +130,27 @@ static int check_sort(void) /* Test array against different sizes */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, 0); - reference_sort(reference, *size); - bh_sort(data, *size, sizeof(int), int_equal); + DBG_FillArrays(data, reference, *size, 0); + DBG_ReferenceSort(reference, *size); + BH_Sort(data, *size, sizeof(int), DBG_IntEqual); BH_VERIFY(memcmp(reference, data, *size * sizeof(int)) == 0); } /* Test against negative values */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, -1); - reference_sort(reference, *size); - bh_sort(data, *size, sizeof(int), int_equal); + DBG_FillArrays(data, reference, *size, -1); + DBG_ReferenceSort(reference, *size); + BH_Sort(data, *size, sizeof(int), DBG_IntEqual); BH_VERIFY(memcmp(reference, data, *size * sizeof(int)) == 0); } /* Test against duplicates */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, 4); - reference_sort(reference, *size); - bh_sort(data, *size, sizeof(int), int_equal); + DBG_FillArrays(data, reference, *size, 4); + DBG_ReferenceSort(reference, *size); + BH_Sort(data, *size, sizeof(int), DBG_IntEqual); BH_VERIFY(memcmp(reference, data, *size * sizeof(int)) == 0); } @@ -157,7 +158,7 @@ static int check_sort(void) } -static int check_partition(void) +static int CheckPartition(void) { size_t sizes[] = {1, 2, 3, 5, 11, 23, 41, 79, 163, 317, 0}, *size; int reference[317], data[317], value, *pivot; @@ -165,13 +166,13 @@ static int check_partition(void) /* Test empty array and one element array */ data[0] = 1; data[1] = 2; data[2] = 3; value = 0; - pivot = bh_partition(&value, data, 0, sizeof(int), int_equal); + pivot = BH_Partition(&value, data, 0, sizeof(int), DBG_IntEqual); BH_VERIFY(pivot != NULL); BH_VERIFY(data[0] == 1); BH_VERIFY(data[1] == 2); BH_VERIFY(data[2] == 3); - pivot = bh_partition(&value, data, 1, sizeof(int), int_equal); + pivot = BH_Partition(&value, data, 1, sizeof(int), DBG_IntEqual); BH_VERIFY(pivot == data); BH_VERIFY(data[0] == 1); BH_VERIFY(data[1] == 2); @@ -180,104 +181,104 @@ static int check_partition(void) /* Test array against different sizes */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, 0); + DBG_FillArrays(data, reference, *size, 0); value = 16384; - pivot = bh_partition(&value, data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_partition(pivot - data, value, data, *size) == 0); + pivot = BH_Partition(&value, data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyPartition(pivot - data, value, data, *size) == 0); - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size * sizeof(int)) == 0); } /* Test against negative values */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, -1); + DBG_FillArrays(data, reference, *size, -1); value = -16384; - pivot = bh_partition(&value, data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_partition(pivot - data, value, data, *size) == 0); + pivot = BH_Partition(&value, data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyPartition(pivot - data, value, data, *size) == 0); - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size * sizeof(int)) == 0); } /* Test against duplicates */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, 4); + DBG_FillArrays(data, reference, *size, 4); value = 2; - pivot = bh_partition(&value, data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_partition(pivot - data, value, data, *size) == 0); + pivot = BH_Partition(&value, data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyPartition(pivot - data, value, data, *size) == 0); - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size * sizeof(int)) == 0); } /* Test array against small pivots */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, 0); + DBG_FillArrays(data, reference, *size, 0); value = -100; - pivot = bh_partition(&value, data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_partition(pivot - data, value, data, *size) == 0); + pivot = BH_Partition(&value, data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyPartition(pivot - data, value, data, *size) == 0); - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size * sizeof(int)) == 0); } /* Test array against large pivots */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, 0); + DBG_FillArrays(data, reference, *size, 0); value = 65536; - pivot = bh_partition(&value, data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_partition(pivot - data, value, data, *size) == 0); + pivot = BH_Partition(&value, data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyPartition(pivot - data, value, data, *size) == 0); - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size * sizeof(int)) == 0); } /* Test array against different sizes (pivot inside the array) */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, 0); + DBG_FillArrays(data, reference, *size, 0); value = data[0]; - pivot = bh_partition(data, data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_partition(pivot - data, value, data, *size) == 0); + pivot = BH_Partition(data, data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyPartition(pivot - data, value, data, *size) == 0); - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size * sizeof(int)) == 0); } /* Test against negative values (pivot inside the array) */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, -1); + DBG_FillArrays(data, reference, *size, -1); value = data[0]; - pivot = bh_partition(data, data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_partition(pivot - data, value, data, *size) == 0); + pivot = BH_Partition(data, data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyPartition(pivot - data, value, data, *size) == 0); - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size * sizeof(int)) == 0); } /* Test against duplicates (pivot inside the array) */ for (size = sizes; *size; ++size) { - fill_arrays(data, reference, *size, 4); + DBG_FillArrays(data, reference, *size, 4); value = data[0]; - pivot = bh_partition(data, data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_partition(pivot - data, value, data, *size) == 0); + pivot = BH_Partition(data, data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyPartition(pivot - data, value, data, *size) == 0); - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size * sizeof(int)) == 0); } @@ -287,11 +288,11 @@ static int check_partition(void) memset(data, 0, sizeof(int) * *size); memset(reference, 0, sizeof(int) * *size); value = data[*size - 1]; - pivot = bh_partition(data + *size - 1, data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_partition(pivot - data, value, data, *size) == 0); + pivot = BH_Partition(data + *size - 1, data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyPartition(pivot - data, value, data, *size) == 0); - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size * sizeof(int)) == 0); } @@ -299,14 +300,14 @@ static int check_partition(void) } -static int check_heap_make(void) +static int CheckHeapMake(void) { size_t sizes[] = {1, 2, 3, 5, 11, 23, 41, 79, 163, 317, 0}, *size; int data[317]; /* Test empty array */ data[0] = 1; data[1] = 2; data[2] = 3; - bh_heap_make(data, 0, sizeof(int), int_equal); + BH_HeapMake(data, 0, sizeof(int), DBG_IntEqual); BH_VERIFY(data[0] == 1); BH_VERIFY(data[1] == 2); BH_VERIFY(data[2] == 3); @@ -314,32 +315,32 @@ static int check_heap_make(void) /* Test array against different sizes */ for (size = sizes; *size; ++size) { - fill_arrays(data, NULL, *size, 0); - bh_heap_make(data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_heap(data, *size) == 0); + DBG_FillArrays(data, NULL, *size, 0); + BH_HeapMake(data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyHeap(data, *size) == 0); } /* Test array against negative values */ for (size = sizes; *size; ++size) { - fill_arrays(data, NULL, *size, -1); - bh_heap_make(data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_heap(data, *size) == 0); + DBG_FillArrays(data, NULL, *size, -1); + BH_HeapMake(data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyHeap(data, *size) == 0); } /* Test against duplicates */ for (size = sizes; *size; ++size) { - fill_arrays(data, NULL, *size, 4); - bh_heap_make(data, *size, sizeof(int), int_equal); - BH_VERIFY(verify_heap(data, *size) == 0); + DBG_FillArrays(data, NULL, *size, 4); + BH_HeapMake(data, *size, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyHeap(data, *size) == 0); } return 0; } -static int check_heap_insert(void) +static int CheckHeapInsert(void) { size_t sizes[] = {1, 2, 3, 5, 11, 23, 41, 79, 163, 317, 0}, *size; int data[317], reference[317]; @@ -348,18 +349,18 @@ static int check_heap_insert(void) for (size = sizes; *size; ++size) { size_t i; - fill_arrays(data, reference, *size, 0); + DBG_FillArrays(data, reference, *size, 0); for (i = 0; i < *size; ++i) { int value; value = data[i]; - bh_heap_insert(&value, data, i, sizeof(int), int_equal); - BH_VERIFY(verify_heap(data, i + 1) == 0); + BH_HeapInsert(&value, data, i, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyHeap(data, i + 1) == 0); } - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size) == 0); } @@ -367,15 +368,15 @@ static int check_heap_insert(void) for (size = sizes; *size; ++size) { size_t i; - fill_arrays(data, reference, *size, 0); + DBG_FillArrays(data, reference, *size, 0); for (i = 0; i < *size; ++i) { - bh_heap_insert(NULL, data, i, sizeof(int), int_equal); - BH_VERIFY(verify_heap(data, i + 1) == 0); + BH_HeapInsert(NULL, data, i, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyHeap(data, i + 1) == 0); } - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size) == 0); } @@ -383,7 +384,7 @@ static int check_heap_insert(void) } -static int check_heap_remove(void) +static int CheckHeapRemove(void) { size_t sizes[] = {1, 2, 3, 5, 11, 23, 41, 79, 163, 317, 0}, *size; int data[317], reference[317]; @@ -392,17 +393,17 @@ static int check_heap_remove(void) for (size = sizes; *size; ++size) { size_t i; - fill_arrays(data, reference, *size, 0); - bh_heap_make(data, *size, sizeof(int), int_equal); + DBG_FillArrays(data, reference, *size, 0); + BH_HeapMake(data, *size, sizeof(int), DBG_IntEqual); for (i = *size; i > 0; i--) { - BH_VERIFY(verify_heap(data, i) == 0); - bh_heap_remove(data, i, sizeof(int), int_equal); + BH_VERIFY(DBG_VerifyHeap(data, i) == 0); + BH_HeapRemove(data, i, sizeof(int), DBG_IntEqual); } - reference_sort(data, *size); - reference_sort(reference, *size); + DBG_ReferenceSort(data, *size); + DBG_ReferenceSort(reference, *size); BH_VERIFY(memcmp(data, reference, *size) == 0); } @@ -410,57 +411,57 @@ static int check_heap_remove(void) } -static int check_heap_replace(void) +static int CheckHeapReplace(void) { int data[11] = {1, 2, 3, 5, 11, 23, 41, 79, 163, 317, 0}; int reference[11] = {1, 2, 3, 5, 11, 23, 41, 79, 163, 317, 0}; int value; /* Prepare test arrays */ - bh_heap_make(data, 10, sizeof(int), int_equal); - bh_heap_make(reference, 10, sizeof(int), int_equal); - BH_VERIFY(verify_heap(data, 10) == 0); - BH_VERIFY(verify_heap(reference, 10) == 0); + BH_HeapMake(data, 10, sizeof(int), DBG_IntEqual); + BH_HeapMake(reference, 10, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyHeap(data, 10) == 0); + BH_VERIFY(DBG_VerifyHeap(reference, 10) == 0); /* Verfify heap replace */ value = 20; - bh_heap_replace(&value, data, 10, sizeof(int), int_equal); - bh_heap_remove(reference, 10, sizeof(int), int_equal); - bh_heap_insert(&value, reference, 9, sizeof(int), int_equal); - - BH_VERIFY(verify_heap(data, 10) == 0); - BH_VERIFY(verify_heap(reference, 10) == 0); - bh_sort(data, 10, sizeof(int), int_equal); - bh_sort(reference, 10, sizeof(int), int_equal); + BH_HeapReplace(&value, data, 10, sizeof(int), DBG_IntEqual); + BH_HeapRemove(reference, 10, sizeof(int), DBG_IntEqual); + BH_HeapInsert(&value, reference, 9, sizeof(int), DBG_IntEqual); + + BH_VERIFY(DBG_VerifyHeap(data, 10) == 0); + BH_VERIFY(DBG_VerifyHeap(reference, 10) == 0); + BH_Sort(data, 10, sizeof(int), DBG_IntEqual); + BH_Sort(reference, 10, sizeof(int), DBG_IntEqual); BH_VERIFY(memcmp(data, reference, 10 * sizeof(int)) == 0); /* Verify heap replace on single element array */ value = 400; - bh_heap_replace(&value, data, 1, sizeof(int), int_equal); - bh_heap_remove(reference, 1, sizeof(int), int_equal); - bh_heap_insert(&value, reference, 0, sizeof(int), int_equal); + BH_HeapReplace(&value, data, 1, sizeof(int), DBG_IntEqual); + BH_HeapRemove(reference, 1, sizeof(int), DBG_IntEqual); + BH_HeapInsert(&value, reference, 0, sizeof(int), DBG_IntEqual); - BH_VERIFY(verify_heap(data, 1) == 0); - BH_VERIFY(verify_heap(reference, 1) == 0); + BH_VERIFY(DBG_VerifyHeap(data, 1) == 0); + BH_VERIFY(DBG_VerifyHeap(reference, 1) == 0); BH_VERIFY(memcmp(data, reference, 1 * sizeof(int)) == 0); /* Prepare test arrays */ - bh_sort(data, 10, sizeof(int), int_equal); - bh_sort(reference, 10, sizeof(int), int_equal); - bh_heap_make(data, 10, sizeof(int), int_equal); - bh_heap_make(reference, 10, sizeof(int), int_equal); - BH_VERIFY(verify_heap(data, 10) == 0); - BH_VERIFY(verify_heap(reference, 10) == 0); + BH_Sort(data, 10, sizeof(int), DBG_IntEqual); + BH_Sort(reference, 10, sizeof(int), DBG_IntEqual); + BH_HeapMake(data, 10, sizeof(int), DBG_IntEqual); + BH_HeapMake(reference, 10, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyHeap(data, 10) == 0); + BH_VERIFY(DBG_VerifyHeap(reference, 10) == 0); data[10] = 1000; value = 1000; - bh_heap_replace(NULL, data, 10, sizeof(int), int_equal); - bh_heap_remove(reference, 10, sizeof(int), int_equal); - bh_heap_insert(&value, reference, 9, sizeof(int), int_equal); - BH_VERIFY(verify_heap(data, 10) == 0); - BH_VERIFY(verify_heap(reference, 10) == 0); - bh_sort(data, 10, sizeof(int), int_equal); - bh_sort(reference, 10, sizeof(int), int_equal); + BH_HeapReplace(NULL, data, 10, sizeof(int), DBG_IntEqual); + BH_HeapRemove(reference, 10, sizeof(int), DBG_IntEqual); + BH_HeapInsert(&value, reference, 9, sizeof(int), DBG_IntEqual); + BH_VERIFY(DBG_VerifyHeap(data, 10) == 0); + BH_VERIFY(DBG_VerifyHeap(reference, 10) == 0); + BH_Sort(data, 10, sizeof(int), DBG_IntEqual); + BH_Sort(reference, 10, sizeof(int), DBG_IntEqual); BH_VERIFY(memcmp(data, reference, 10 * sizeof(int)) == 0); return 0; @@ -472,12 +473,12 @@ int main(int argc, char **argv) BH_UNUSED(argc); BH_UNUSED(argv); - bh_unit_add("sort", check_sort); - bh_unit_add("partition", check_partition); - bh_unit_add("heap_make", check_heap_make); - bh_unit_add("heap_insert", check_heap_insert); - bh_unit_add("heap_remove", check_heap_remove); - bh_unit_add("heap_replace", check_heap_replace); + BH_UnitAdd("Sort", CheckSort); + BH_UnitAdd("Partition", CheckPartition); + BH_UnitAdd("HeapMake", CheckHeapMake); + BH_UnitAdd("HeapInsert", CheckHeapInsert); + BH_UnitAdd("HeapRemove", CheckHeapRemove); + BH_UnitAdd("HeapReplace", CheckHeapReplace); - return bh_unit_run(); + return BH_UnitRun(); } |
