From afde84236e16c505c91059cd4df1499f651c5e1b Mon Sep 17 00:00:00 2001 From: fanasina Date: Wed, 23 Aug 2023 23:36:46 +0200 Subject: [PATCH] Now, we can rec results of each thread in separate files, and print all results at the end of all tests --- isgood | Bin 92152 -> 127960 bytes log2 | 211 ------------------------------ src/permutation_t/permutation_t.c | 16 ++- src/permutation_t/permutation_t.h | 4 +- src/set_theoric_t/set_theoric_t.h | 2 +- src/test_t/is_good.c | 44 ++++--- src/test_t/test_t.c | 42 +++++- src/test_t/test_t.h | 110 ++++++++++++++-- src/tools_t/tools_t.c | 4 + src/tools_t/tools_t.h | 7 +- 10 files changed, 185 insertions(+), 255 deletions(-) delete mode 100644 log2 diff --git a/isgood b/isgood index 9007a8de4c079534ed21346d765286b2cd4fa140..58888fe2fc142d9f9fc3a7ab80f92c91374be1bc 100644 GIT binary patch literal 127960 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%0DBvT_10MR)_}@Jld$96Z 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 diff --git a/log2 b/log2 deleted file mode 100644 index f27cc5b..0000000 --- a/log2 +++ /dev/null @@ -1,211 +0,0 @@ -In file included from ./src/permutation_t/permutation_t.h:5, - from src/permutation_t/permutation_t.c:1: -./src/set_theoric_t/set_theoric_t.h:13:18: warning: parameter names (without types) in function declaration - 13 | typedef struct SET_THEORIC_##type SET_THEORIC_##type; \ - | ^~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:17:1: note: in expansion of macro ‘GENERATE_UNSIGNED_SET_THEORIC’ - 17 | GENERATE_UNSIGNED_SET_THEORIC(TYPE_U_CHAR) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:13:18: warning: parameter names (without types) in function declaration - 13 | typedef struct SET_THEORIC_##type SET_THEORIC_##type; \ - | ^~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:18:1: note: in expansion of macro ‘GENERATE_UNSIGNED_SET_THEORIC’ - 18 | GENERATE_UNSIGNED_SET_THEORIC(TYPE_U_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:13:18: warning: parameter names (without types) in function declaration - 13 | typedef struct SET_THEORIC_##type SET_THEORIC_##type; \ - | ^~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:19:1: note: in expansion of macro ‘GENERATE_UNSIGNED_SET_THEORIC’ - 19 | GENERATE_UNSIGNED_SET_THEORIC(TYPE_U_L_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:13:18: warning: parameter names (without types) in function declaration - 13 | typedef struct SET_THEORIC_##type SET_THEORIC_##type; \ - | ^~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:20:1: note: in expansion of macro ‘GENERATE_UNSIGNED_SET_THEORIC’ - 20 | GENERATE_UNSIGNED_SET_THEORIC(TYPE_SIZE_T) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_CHAR’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_CHAR’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:67:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 67 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_CHAR) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_CHAR *’ but argument is of type ‘const PERMUTATION_TYPE_CHAR *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:67:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 67 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_CHAR) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_U_CHAR’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_U_CHAR’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:68:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 68 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_U_CHAR) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_U_CHAR *’ but argument is of type ‘const PERMUTATION_TYPE_U_CHAR *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:68:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 68 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_U_CHAR) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_INT’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_INT’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:69:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 69 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_INT *’ but argument is of type ‘const PERMUTATION_TYPE_INT *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:69:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 69 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_U_INT’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_U_INT’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:70:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 70 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_U_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_U_INT *’ but argument is of type ‘const PERMUTATION_TYPE_U_INT *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:70:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 70 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_U_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_L_INT’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_L_INT’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:71:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 71 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_L_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_L_INT *’ but argument is of type ‘const PERMUTATION_TYPE_L_INT *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:71:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 71 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_L_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_U_L_INT’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_U_L_INT’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:72:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 72 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_U_L_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_U_L_INT *’ but argument is of type ‘const PERMUTATION_TYPE_U_L_INT *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:72:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 72 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_U_L_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_SIZE_T’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_SIZE_T’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:73:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 73 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_SIZE_T) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_SIZE_T *’ but argument is of type ‘const PERMUTATION_TYPE_SIZE_T *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:73:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 73 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_SIZE_T) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_FLOAT’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_FLOAT’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:74:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 74 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_FLOAT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_FLOAT *’ but argument is of type ‘const PERMUTATION_TYPE_FLOAT *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:74:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 74 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_FLOAT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_DOUBLE’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_DOUBLE’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:75:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 75 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_DOUBLE) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_DOUBLE *’ but argument is of type ‘const PERMUTATION_TYPE_DOUBLE *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:75:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 75 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_DOUBLE) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_L_DOUBLE’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_L_DOUBLE’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:76:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 76 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_L_DOUBLE) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_L_DOUBLE *’ but argument is of type ‘const PERMUTATION_TYPE_L_DOUBLE *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:76:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 76 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_L_DOUBLE) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_STRING’: -src/permutation_t/permutation_t.c:39:37: warning: passing argument 2 of ‘COPY_ARRAY_TYPE_STRING’ from incompatible pointer type [-Wincompatible-pointer-types] - 39 | COPY_ARRAY_##type(sorted_perm, p->perm, size);\ - | ~^~~~~~ - | | - | char ** -src/permutation_t/permutation_t.c:77:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 77 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_STRING) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from ./src/permutation_t/permutation_t.h:4, - from src/permutation_t/permutation_t.c:1: -./src/tools_t/tools_t.h:29:49: note: expected ‘const char **’ but argument is of type ‘char **’ - 29 | void COPY_ARRAY_##type(type* dst, const type* src, size_t size);\ - | ~~~~~~~~~~~~^~~ -./src/tools_t/tools_t.h:46:1: note: in expansion of macro ‘GENERATE_ALL’ - 46 | GENERATE_ALL(TYPE_STRING) - | ^~~~~~~~~~~~ -src/permutation_t/permutation_t.c: In function ‘IS_PERMUTATION_TYPE_STRING’: -src/permutation_t/permutation_t.c:60:75: warning: passing argument 1 of ‘TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_STRING’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers] - 60 | PERMUTATION_TYPE_SIZE_T *t_p = TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(p);\ - | ^ -src/permutation_t/permutation_t.c:77:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 77 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_STRING) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -src/permutation_t/permutation_t.c:33:88: note: expected ‘PERMUTATION_TYPE_STRING *’ but argument is of type ‘const PERMUTATION_TYPE_STRING *’ - 33 | PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ - | ~~~~~~~~~~~~~~~~~~~~^ -src/permutation_t/permutation_t.c:77:1: note: in expansion of macro ‘GENERATE_PERMUTATION_FUNCTIONS’ - 77 | GENERATE_PERMUTATION_FUNCTIONS(TYPE_STRING) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -In file included from src/set_theoric_t/set_theoric_t.c:2: -./src/set_theoric_t/set_theoric_t.h:13:18: warning: parameter names (without types) in function declaration - 13 | typedef struct SET_THEORIC_##type SET_THEORIC_##type; \ - | ^~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:17:1: note: in expansion of macro ‘GENERATE_UNSIGNED_SET_THEORIC’ - 17 | GENERATE_UNSIGNED_SET_THEORIC(TYPE_U_CHAR) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:13:18: warning: parameter names (without types) in function declaration - 13 | typedef struct SET_THEORIC_##type SET_THEORIC_##type; \ - | ^~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:18:1: note: in expansion of macro ‘GENERATE_UNSIGNED_SET_THEORIC’ - 18 | GENERATE_UNSIGNED_SET_THEORIC(TYPE_U_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:13:18: warning: parameter names (without types) in function declaration - 13 | typedef struct SET_THEORIC_##type SET_THEORIC_##type; \ - | ^~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:19:1: note: in expansion of macro ‘GENERATE_UNSIGNED_SET_THEORIC’ - 19 | GENERATE_UNSIGNED_SET_THEORIC(TYPE_U_L_INT) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:13:18: warning: parameter names (without types) in function declaration - 13 | typedef struct SET_THEORIC_##type SET_THEORIC_##type; \ - | ^~~~~~~~~~~~ -./src/set_theoric_t/set_theoric_t.h:20:1: note: in expansion of macro ‘GENERATE_UNSIGNED_SET_THEORIC’ - 20 | GENERATE_UNSIGNED_SET_THEORIC(TYPE_SIZE_T) - | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/src/permutation_t/permutation_t.c b/src/permutation_t/permutation_t.c index 4a6795b..28bb305 100644 --- a/src/permutation_t/permutation_t.c +++ b/src/permutation_t/permutation_t.c @@ -30,13 +30,14 @@ GENERATE_PERMUTATION_FUNCTIONS_UNSIGNED(TYPE_SIZE_T) p->perm = malloc(size * sizeof(type));\ return p; }\ \ - PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(PERMUTATION_##type *p ){\ + PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(const PERMUTATION_##type *p ){\ if (p == NULL) return NULL;\ PERMUTATION_TYPE_SIZE_T *t_p = malloc(sizeof(PERMUTATION_TYPE_SIZE_T));\ size_t size = p->size;\ + t_p->size = size;\ t_p->perm = malloc(size * sizeof(TYPE_SIZE_T));\ type *sorted_perm = malloc(size * sizeof(type));\ - COPY_ARRAY_##type(sorted_perm, p->perm, size);\ + COPY_ARRAY_##type(sorted_perm,(const type*)p->perm, size);\ qsort(sorted_perm, size, sizeof(type), COMPARE_N_##type);\ size_t *rec_index_visited = malloc(size * sizeof(size_t));\ size_t cur_rec = 0; bool found_rec;\ @@ -48,12 +49,17 @@ GENERATE_PERMUTATION_FUNCTIONS_UNSIGNED(TYPE_SIZE_T) if(rec_index_visited[k] == j){\ found_rec == true; break; } } \ if(found_rec == false){\ - t_p->perm[i] = j;\ + /*t_p->perm[i] = j;*/\ + t_p->perm[j] = i;\ rec_index_visited[cur_rec++] = j; \ - break; } } } } \ + break; }\ + }\ + }\ + }\ free(rec_index_visited);\ free(sorted_perm);\ - return t_p; }\ + return t_p; \ + }\ \ bool IS_PERMUTATION_##type(const PERMUTATION_##type *p){\ if(p == NULL) return false;\ diff --git a/src/permutation_t/permutation_t.h b/src/permutation_t/permutation_t.h index db4c7dd..6a5d8ef 100644 --- a/src/permutation_t/permutation_t.h +++ b/src/permutation_t/permutation_t.h @@ -17,16 +17,16 @@ \ typedef struct PERMUTATION_##type PERMUTATION_##type;\ PERMUTATION_##type * CREATE_PERMUTATION_##type(size_t size);\ +PERMUTATION_TYPE_SIZE_T * TRANSLATE_TO_SET_THEORIC_SIZE_T_##type(const PERMUTATION_##type *p );\ - +GENERATE_PERMUTATION(TYPE_SIZE_T) GENERATE_PERMUTATION(TYPE_CHAR) GENERATE_PERMUTATION(TYPE_U_CHAR) GENERATE_PERMUTATION(TYPE_INT) GENERATE_PERMUTATION(TYPE_U_INT) GENERATE_PERMUTATION(TYPE_L_INT) GENERATE_PERMUTATION(TYPE_U_L_INT) -GENERATE_PERMUTATION(TYPE_SIZE_T) GENERATE_PERMUTATION(TYPE_FLOAT) GENERATE_PERMUTATION(TYPE_DOUBLE) GENERATE_PERMUTATION(TYPE_L_DOUBLE) diff --git a/src/set_theoric_t/set_theoric_t.h b/src/set_theoric_t/set_theoric_t.h index 2fda0bb..12a0fea 100644 --- a/src/set_theoric_t/set_theoric_t.h +++ b/src/set_theoric_t/set_theoric_t.h @@ -11,7 +11,7 @@ type *set; \ }; \ typedef struct SET_THEORIC_##type SET_THEORIC_##type; \ - SET_THEORIC_##type * CREATE_SET_THEORIC_##type(TYPE_##type); \ + SET_THEORIC_##type * CREATE_SET_THEORIC_##type(size_t id/*TYPE_##type*/); \ bool IS_SET_THEORIC_##type(SET_THEORIC_##type *st); \ GENERATE_UNSIGNED_SET_THEORIC(TYPE_U_CHAR) diff --git a/src/test_t/is_good.c b/src/test_t/is_good.c index 445bad1..b77dbc5 100644 --- a/src/test_t/is_good.c +++ b/src/test_t/is_good.c @@ -11,43 +11,41 @@ #include "src/test_t/test_t.h" -//#include "src/permutation_t/permutation_t.h" +#include "src/permutation_t/permutation_t.h" + TEST(size_permutation2){ - printf("another size_permutation2 again\n"); + PRINTF("another size_permutation2 again\n"); ASSERT_TRUE(false); } TEST(size_permutation) { -/* PERMUTATION_TYPE_CHAR *p = CREATE_PERMUTATION_TYPE_CHAR(3); - printf(" size = %u \n",p->size); - if(p->size == 3) print_OK_with_msg_endl(" FF yeah GOOD test size passed "); - else print_KO_with_msg_endl("NOT GOOD test size not passed "); -*/ - printf("test size_permutation2\n"); + PRINTF(" size = %lu \n",p->size); + EXPECT_EQ(p->size, 3); + PRINTF("test size_permutation2\n"); } TEST(size_permutation2){ - printf("another size_permutation2 again false\n"); + PRINTF("another size_permutation2 again false\n"); bool val_bool = false; ASSERT_TRUE(val_bool); } TEST(size_permutation2) { - printf("test size_permutation2\n"); + PRINTF("test size_permutation2\n"); bool val_bool = true; ASSERT_FALSE(val_bool); /* PERMUTATION_TYPE_CHAR *p = CREATE_PERMUTATION_TYPE_CHAR(3); - printf(" size = %u \n",p->size); + PRINTF(" size = %u \n",p->size); if(p->size == 3) print_OK_with_msg_endl(" FF yeah GOOD test size passed "); else print_KO_with_msg_endl("NOT GOOD test size not passed "); */ } TEST(float_equal){ - printf("another size_permutation2 float\n"); + PRINTF("another size_permutation2 float\n"); ASSERT_TRUE(true); float a = 1.00001f; float b = 1.00001f; @@ -57,7 +55,7 @@ TEST(float_equal){ ASSERT_EQ_TYPE_FLOAT(1.0000102f,b); } TEST(double_equal){ - printf("another size_permutation2 double\n"); + PRINTF("another size_permutation2 double\n"); ASSERT_TRUE(true); double a = 1.00000001; double b = 1.00000001; @@ -100,20 +98,32 @@ TEST(expect){ } TEST(){ - printf("no test, only print\n"); + PRINTF("no test, only print\n"); } TEST(){ - printf("no test, only print\n"); + PRINTF("no test, only print\n"); } TEST(){ - printf("no test, only print\n"); + PRINTF("no test, only print\n"); } TEST(){ - printf("no test, only print\n"); + + PERMUTATION_TYPE_CHAR *p_char = CREATE_PERMUTATION_TYPE_CHAR(6); + p_char->perm[0]='B'; + p_char->perm[1]='A'; + p_char->perm[2]='Y'; + p_char->perm[3]='C'; + p_char->perm[4]='D'; + p_char->perm[5]='Z'; + + PERMUTATION_TYPE_SIZE_T *tr_p_char = TRANSLATE_TO_SET_THEORIC_SIZE_T_TYPE_CHAR(p_char); + + for(int i = 0; i < tr_p_char->size; ++i) PRINTF(" [%d ]%ld ,",i,tr_p_char->perm[i]); + PRINTF("p_char == %s\n",p_char->perm); } TEST(lessThan){ diff --git a/src/test_t/test_t.c b/src/test_t/test_t.c index 7180008..af2cf46 100644 --- a/src/test_t/test_t.c +++ b/src/test_t/test_t.c @@ -27,6 +27,8 @@ #endif + + #if 0 #ifndef PARALLEL #define PARALLEL 1 @@ -70,6 +72,8 @@ struct failed_lists{ */ bool is_parallel = 0; +FILE **f_ou_th; + size_t count_tests = 0; size_t count_pass_global = 0; @@ -174,7 +178,7 @@ void append_failed_list(struct failed_lists **fn_failed_list ,const char *name_f */ long int id_of_thread_executed(void){ size_t id_from_self = pthread_self(); - for(size_t i=0; i