#include #include #include #include #include "random.h" #include "bubble_sort.h" static int *test_case; static int *test_array; static int *qarray; /** * Este funciĆ³n va a comparar valores para devolver los valores en orden ascendida * @param a El primer valor a comparar * @param b El segundo valor a comparar * @return Retorna la comparaciĆ³n de los dos argumentos */ int compar(const void *a, const void *b) { return (*(int*) a - *(int*) b); } /** * Limpiar la memoria al salir */ void cleanup() { free(test_case); free(test_array); free(qarray); } /** * El programa de test */ int main(int argc, char **argv) { int n = 50000; int i; int gen; test_case = malloc(sizeof(int) * n); qarray = malloc(sizeof(int) * n); test_array = malloc(sizeof(int) * n); atexit(cleanup); fprintf(stdout, "Running tests:\n"); // Test random number generation fprintf(stdout, "\trandom generation: "); fflush(stdout); for (i = 0; i < 5000000; i++) { gen = gen_rand(-1000, 1000); if (gen < -1000 || gen > 1000) { fprintf(stdout, "fail\n"); return 1; } } fprintf(stdout, "pass\n"); // Prepare for sort tests for (i = 0; i < n; i++) { test_case[i] = gen_rand(-20, 100); } memcpy(qarray, test_case, sizeof(int) * n); memcpy(test_array, test_case, sizeof(int) * n); qsort(qarray, n, sizeof(int), compar); // Test bubble sort fprintf(stdout, "\tbubble sort: "); fflush(stdout); bubble_sort(test_array, n); for (i = 0; i < n; i++) { if (test_array[i] != qarray[i]) { fprintf(stdout, "fail\n"); return 1; } } fprintf(stdout, "pass\n"); return 0; }