shell_test.c type_dequeue.c

Mise à jour des tests et de dequeue
This commit is contained in:
2024-12-15 20:29:35 +01:00
parent f8cfa7ac38
commit ecdf33a2a5
2 changed files with 59 additions and 38 deletions

View File

@@ -3,6 +3,7 @@
#include <stdbool.h>
#include <stdio.h>
#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);
}
}

View File

@@ -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);