From ecdf33a2a5381ddead5adae810973dd233f62eeb Mon Sep 17 00:00:00 2001 From: untypequicode Date: Sun, 15 Dec 2024 20:29:35 +0100 Subject: [PATCH] =?UTF-8?q?shell=5Ftest.c=20type=5Fdequeue.c=20Mise=20?= =?UTF-8?q?=C3=A0=20jour=20des=20tests=20et=20de=20dequeue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Anna et Ethan/shell_test.c | 95 ++++++++++++++++++++++-------------- Anna et Ethan/type_dequeue.c | 2 +- 2 files changed, 59 insertions(+), 38 deletions(-) diff --git a/Anna et Ethan/shell_test.c b/Anna et Ethan/shell_test.c index e972e86..43d1346 100644 --- a/Anna et Ethan/shell_test.c +++ b/Anna et Ethan/shell_test.c @@ -3,6 +3,7 @@ #include #include +#include "error.h" #include "files.h" #include "graphs.h" #include "nfa.h" @@ -20,7 +21,8 @@ #define TEST_DEQUEUE true #define TEST_BOOLARRAY false -#define NB_TESTS_OCCUR 1000 +#define NB_TESTS_OCCUR 100000 +#define NB_MAX_SIZE_DEQUEUE 100 static void printf_dequeue(dequeue *dq, char *function, char *var, int i_function, int i_result) { @@ -78,6 +80,11 @@ void test(void) { // nfa* A = create_sing_epsilon(); // nfa_view(A); + if (NB_MAX_SIZE_DEQUEUE == 0) { + ERROR("NB_MAX_SIZE_DEQUEUE doit être supérieur à 0"); + exit(EXIT_FAILURE); + } + // Tests de dequeue if (TEST_DEQUEUE) { dequeue *dq = create_dequeue(); @@ -142,7 +149,7 @@ void test(void) { "Test makeempty_dequeue et copy_dequeue_right in array [1, 20]\n"); // Test makeempty_dequeue et copy_dequeue_right printf("--------------------\n"); dequeue *dq2 = create_dequeue(); - for (uint i = 0; i < (uint)rand() % 100; i++) { + for (uint i = 0; i < (uint)rand() % NB_MAX_SIZE_DEQUEUE; i++) { makeempty_dequeue(dq2); // printf_dequeue(dq2, "makeempty_dequeue", "dq2", -1, -1); copy_dequeue_right(dq2, dq, i); @@ -159,7 +166,7 @@ void test(void) { printf("--------------------\n"); printf("Test mem_dequeue in array [1, 20]\n"); // Test mem_dequeue printf("--------------------\n"); - for (uint i = 0; i < (uint)rand() % 100; i++) { + for (uint i = 0; i < (uint)rand() % NB_MAX_SIZE_DEQUEUE; i++) { uint value = rand() % 100; // printf_dequeue(dq, "mem_dequeue", "dq2", value, // mem_dequeue(value, dq)); @@ -170,7 +177,7 @@ void test(void) { if (dq == NULL) delete_dequeue(dq2); for (uint k = 0; k < NB_TESTS_OCCUR; k++) { dq2 = create_dequeue(); - for (uint i = 0; i < (uint)rand() % 100 + 1; i++) { + for (uint i = 0; i < (uint)rand() % NB_MAX_SIZE_DEQUEUE + 1; i++) { lefins_dequeue(rand() % 100, dq2); } // printf_dequeue(dq2, "random", "dq2", -1, -1); @@ -180,14 +187,15 @@ void test(void) { printf( "Test sort_dequeue_norepeat\n"); // Test sort_dequeue_norepeat printf("--------------------\n"); - for (uint i = 0; i < size_dequeue(dq2) - 1; i++) { + for (uint i = 0; size_dequeue(dq2) > 0 && i < size_dequeue(dq2) - 1; + i++) { assert(lefread_dequeue(dq2, i) < lefread_dequeue(dq2, i + 1)); printf( - "%u - assert(lefread_dequeue(dq2, %d) < " + "%u%% - assert(lefread_dequeue(dq2, %d) < " "lefread_dequeue(dq2, " "%d)) " "check\n", - k, i, i + 1); + k / (NB_TESTS_OCCUR / 100), i, i + 1); } // for (uint i = 0; i < 20; i++) { // printf_dequeue(dq2, "mem_dequeue_sorted", "dq2", i, @@ -196,7 +204,8 @@ void test(void) { printf("--------------------\n"); printf("Test mem_dequeue_sorted\n"); // Test mem_dequeue_sorted printf("--------------------\n"); - for (uint i = 0; i < size_dequeue(dq2); i++) { + for (uint i = 0; size_dequeue(dq2) > 0 && i < size_dequeue(dq2); + i++) { assert(mem_dequeue_sorted(i, dq2) == mem_dequeue(i, dq2)); printf("assert(mem_dequeue_sorted(%d, dq2) == %d) check\n", i, mem_dequeue(i, dq2)); @@ -210,46 +219,54 @@ void test(void) { dq = create_dequeue(); dq2 = create_dequeue(); dequeue *dq3 = create_dequeue(); - for (uint i = 0; i < (uint)rand() % 100; i++) { + for (uint i = 0; i < (uint)rand() % NB_MAX_SIZE_DEQUEUE; i++) { lefins_dequeue(rand() % 100, dq); } - for (uint i = 0; i < (uint)rand() % 100; i++) { + for (uint i = 0; i < (uint)rand() % NB_MAX_SIZE_DEQUEUE; i++) { lefins_dequeue(rand() % 100, dq2); } sort_dequeue_norepeat(dq); sort_dequeue_norepeat(dq2); copy_dequeue_right(dq3, dq, 0); merge_sorted_dequeue(dq3, dq2); - for (uint i = 0; i < size_dequeue(dq3) - 1; i++) { + for (uint i = 0; size_dequeue(dq3) > 0 && i < size_dequeue(dq3) - 1; + i++) { + printf("size = %d\n", size_dequeue(dq3)); assert(lefread_dequeue(dq3, i) < lefread_dequeue(dq3, i + 1)); printf( - "%u - assert(lefread_dequeue(dq2, %d) < " + "%u%% - assert(lefread_dequeue(dq2, %d) < " "lefread_dequeue(dq2, " "%d)) " "check\n", - k, i, i + 1); + k / (NB_TESTS_OCCUR / 100), i, i + 1); } - for (uint i = 0; i < size_dequeue(dq3); i++) { + for (uint i = 0; size_dequeue(dq3) > 0 && i < size_dequeue(dq3); + i++) { assert(mem_dequeue_sorted(lefread_dequeue(dq3, i), dq) || mem_dequeue_sorted(lefread_dequeue(dq3, i), dq2)); printf( - "%u - assert(mem_dequeue_sorted(%d, dq) || " + "%u%% - assert(mem_dequeue_sorted(%d, dq) || " "mem_dequeue_sorted(%d, dq2)) check\n", - k, lefread_dequeue(dq3, i), lefread_dequeue(dq3, i)); + k / (NB_TESTS_OCCUR / 100), lefread_dequeue(dq3, i), + lefread_dequeue(dq3, i)); } - for (uint i = 0; i < size_dequeue(dq); i++) { + for (uint i = 0; size_dequeue(dq) > 0 && i < size_dequeue(dq); + i++) { assert(mem_dequeue_sorted(lefread_dequeue(dq, i), dq3)); printf( - "%u - assert(mem_dequeue_sorted(leftread_dequeue(dq, %d), " + "%u%% - assert(mem_dequeue_sorted(leftread_dequeue(dq, " + "%d), " "dq3)) check\n", - k, i); + k / (NB_TESTS_OCCUR / 100), i); } - for (uint i = 0; i < size_dequeue(dq2); i++) { + for (uint i = 0; size_dequeue(dq2) > 0 && i < size_dequeue(dq2); + i++) { assert(mem_dequeue_sorted(lefread_dequeue(dq2, i), dq3)); printf( - "%u - assert(mem_dequeue_sorted(leftread_dequeue(dq2, %d), " + "%u%% - assert(mem_dequeue_sorted(leftread_dequeue(dq2, " + "%d), " "dq3)) check\n", - k, i); + k / (NB_TESTS_OCCUR / 100), i); } if (dq == NULL) delete_dequeue(dq); if (dq2 == NULL) delete_dequeue(dq2); @@ -263,22 +280,24 @@ void test(void) { for (uint k = 0; k < NB_TESTS_OCCUR; k++) { dq = create_dequeue(); dq2 = create_dequeue(); - for (uint i = 0; i < (uint)rand() % 100; i++) { + for (uint i = 0; i < (uint)rand() % NB_MAX_SIZE_DEQUEUE; i++) { lefins_dequeue(rand() % 100, dq); } - for (uint i = 0; i < (uint)rand() % 100; i++) { + for (uint i = 0; i < (uint)rand() % NB_MAX_SIZE_DEQUEUE; i++) { lefins_dequeue(rand() % 100, dq2); } sort_dequeue_norepeat(dq); sort_dequeue_norepeat(dq2); dequeue *dq3 = make_inter_sorted_dequeue(dq, dq2); - for (uint i = 0; i < size_dequeue(dq3); i++) { + for (uint i = 0; size_dequeue(dq3) > 0 && i < size_dequeue(dq3); + i++) { assert(mem_dequeue_sorted(lefread_dequeue(dq3, i), dq) && mem_dequeue_sorted(lefread_dequeue(dq3, i), dq2)); printf( - "%u - assert(mem_dequeue_sorted(%d, dq) && " + "%u%% - assert(mem_dequeue_sorted(%d, dq) && " "mem_dequeue_sorted(%d, dq2)) check\n", - k, lefread_dequeue(dq3, i), lefread_dequeue(dq3, i)); + k / (NB_TESTS_OCCUR / 100), lefread_dequeue(dq3, i), + lefread_dequeue(dq3, i)); } if (dq == NULL) delete_dequeue(dq); if (dq2 == NULL) delete_dequeue(dq2); @@ -291,10 +310,10 @@ void test(void) { for (uint k = 0; k < NB_TESTS_OCCUR; k++) { dq = create_dequeue(); dq2 = create_dequeue(); - for (uint i = 0; i < (uint)rand() % 100; i++) { + for (uint i = 0; i < (uint)rand() % NB_MAX_SIZE_DEQUEUE; i++) { lefins_dequeue(rand() % 100, dq); } - for (uint i = 0; i < (uint)rand() % 100; i++) { + for (uint i = 0; i < (uint)rand() % NB_MAX_SIZE_DEQUEUE; i++) { lefins_dequeue(rand() % 100, dq2); } sort_dequeue_norepeat(dq); @@ -303,30 +322,33 @@ void test(void) { dequeue *dq3 = make_inter_sorted_dequeue(dq, dq2); assert(result == (size_dequeue(dq3) > 0)); printf( - "%u - size_dequeue(make_inter_sorted_dequeue(dq, dq2)) check\n", - k); + "%u%% - size_dequeue(make_inter_sorted_dequeue(dq, dq2)) " + "check\n", + k / (NB_TESTS_OCCUR / 100)); if (dq == NULL) delete_dequeue(dq); if (dq2 == NULL) delete_dequeue(dq2); } for (uint k = 0; k < NB_TESTS_OCCUR; k++) { dq = create_dequeue(); - for (uint i = 0; i < (uint)rand() % 100; i++) { + for (uint i = 0; i < (uint)rand() % NB_MAX_SIZE_DEQUEUE; i++) { lefins_dequeue(rand() % 100, dq); } sort_dequeue_norepeat(dq); uint val = rand() % 100; insert_dequeue(dq, val); - for (uint i = 0; i < size_dequeue(dq) - 1; i++) { + for (uint i = 0; size_dequeue(dq) > 0 && i < size_dequeue(dq) - 1; + i++) { assert(lefread_dequeue(dq, i) < lefread_dequeue(dq, i + 1)); printf( - "%u - assert(lefread_dequeue(dq2, %d) < " + "%u%% - assert(lefread_dequeue(dq2, %d) < " "lefread_dequeue(dq2, " "%d)) " "check\n", - k, i, i + 1); + k / (NB_TESTS_OCCUR / 100), i, i + 1); } assert(mem_dequeue_sorted(val, dq)); - printf("%u - assert(mem_dequeue_sorted(%d, dq)) check\n", k, val); + printf("%u%% - assert(mem_dequeue_sorted(%d, dq)) check\n", + k / (NB_TESTS_OCCUR / 100), val); if (dq == NULL) delete_dequeue(dq); } printf("--------------------\n"); @@ -380,4 +402,3 @@ void test(void) { delete_barray(ba); } } - diff --git a/Anna et Ethan/type_dequeue.c b/Anna et Ethan/type_dequeue.c index a63472d..b2b1a08 100644 --- a/Anna et Ethan/type_dequeue.c +++ b/Anna et Ethan/type_dequeue.c @@ -164,7 +164,7 @@ uint rigpull_dequeue(dequeue *ptr) { /* Création d'une copie avec décalage */ void copy_dequeue_right(dequeue *ptr1, dequeue *ptr2, uint val) { if (ptr1 == NULL || ptr2 == NULL) ERROR("copy_dequeue_right : ptr NULL"); - if (isempty_dequeue(ptr2)) ERROR("copy_dequeue_right : ptr2 empty"); + if (isempty_dequeue(ptr2)) return; for (uint i = 0; i < size_dequeue(ptr2); i++) { lefread_dequeue(ptr2, i); rigins_dequeue(lefread_dequeue(ptr2, i) + val, ptr1);