/* * Random test: * - p = number of polynomials to activate first * - n = number of random operations */ static void random_test(uint32_t n, uint32_t p) { printf("*******************\n"); printf(" RANDOM TESTS\n"); printf("*******************\n\n"); init_test_bench(&bench, &poly_table); random_activate(&bench, p); while (n > 0) { random_op(&bench); n --; } // final step: propagate if (! bench.mngr_conflict) { test_propagate(&bench); } delete_test_bench(&bench); }
int main(void) { int i, * ptr; op_t op; void * addr; init_mem(); srand(time(NULL)); for (i = 0; i < NPTRS; i++) { ptrs[i] = NULL; } printf("STAGE #1: RANDOM OPERATIONS:\n" "============================\n"); for (i = 0; i < NLOOPS; i++) { op = random_op(); perform_op(op); } printf("\n\n\n"); printf("STAGE #2: BOUNDARY CASES:\n" "=========================\n\n"); printf("BOUNDARY CASE #1: ALLOCATING MEMORY WHEN FULL:\n\n"); printf("Trying to allocate POOL_SIZE = %d bytes of memory...\n", POOL_SIZE); ptr = mem_malloc(POOL_SIZE); if (! ptr) { fprintf(stderr, "\nBoundary case verified: memory full\n"); } else { printf("%d bytes of memory allocated successfully.\n", POOL_SIZE); mem_stat(); printf("\nTrying again to allocate POOL_SIZE = %d bytes of memory...\n", POOL_SIZE); ptr = mem_malloc(POOL_SIZE); if (! ptr) { fprintf(stderr, "\nBoundary case verified: memory full\n"); } } printf("\n\n"); printf("BOUNDARY CASE #2: FREEING ALREADY FREED MEMORY:\n\n"); if (count > 0) { printf("First trying to free existing memory at ptrs[0]...\n"); mem_free(ptrs[0]); printf("mem_free() successful.\n"); mem_stat(); printf("Now trying to free already freed memory at ptrs[0]...\n"); mem_free(ptrs[0]); } else { printf("Trying to free already freed memory at ptrs[0]...\n"); mem_free(ptrs[0]); } printf("\nBoundary case verified: freeing already freed memory\n\n\n"); printf("BOUNDARY CASE #3: FREEING AN INVALID POINTER:\n\n"); addr = (void *) 0x30; /* random memory address */ printf("Trying to free invalid pointer %p...\n", addr); mem_free(addr); printf("\nBoundary case verified: freeing an invalid pointer\n"); return 0; }