add .gitignore and some asserts in test_t

This commit is contained in:
2023-08-15 15:47:34 +02:00
parent 5c870ed113
commit 248ef63738
7 changed files with 85 additions and 57 deletions
+1
View File
@@ -0,0 +1 @@
*.swp
BIN
View File
Binary file not shown.
+25 -5
View File
@@ -39,16 +39,27 @@ TEST(size_permutation2)
else print_KO_with_msg_endl("NOT GOOD test size not passed "); else print_KO_with_msg_endl("NOT GOOD test size not passed ");
*/ */
} }
TEST(size_permutation2){ TEST(float_equal){
printf("another size_permutation2 float\n"); printf("another size_permutation2 float\n");
ASSERT_TRUE(true); ASSERT_TRUE(true);
float a = 1.1; float a = 1.00001f;
float b = 1.1; float b = 1.00001f;
ASSERT_EQ_TYPE_FLOAT(a,b); ASSERT_EQ_TYPE_FLOAT(a,b);
b=1.10001; b=1.0000101f;
ASSERT_EQ_TYPE_FLOAT(a,b); ASSERT_EQ_TYPE_FLOAT(a,b);
ASSERT_EQ_TYPE_FLOAT(1.2,b); ASSERT_EQ_TYPE_FLOAT(1.0000102f,b);
} }
TEST(double_equal){
printf("another size_permutation2 double\n");
ASSERT_TRUE(true);
double a = 1.00000001;
double b = 1.00000001;
ASSERT_EQ_TYPE_DOUBLE(a,b);
b=1.0000000101;
ASSERT_EQ_TYPE_DOUBLE(a,b);
ASSERT_EQ_TYPE_DOUBLE(1.0000000102,b);
}
TEST(){ TEST(){
unsigned char c = 'a'; unsigned char c = 'a';
@@ -58,6 +69,15 @@ TEST(){
ASSERT_TRUE(true); ASSERT_TRUE(true);
} }
TEST(){
int a = 5;
long b = 5;
ASSERT_EQ(a,b);
a=4;
ASSERT_EQ(a,b);
}
//END_TEST(size_permutation) //END_TEST(size_permutation)
//INIT() //INIT()
+2 -1
View File
@@ -100,7 +100,7 @@ bool assert_eq_##type(type var1, type var2,
printHK_color(RED_K,HK_TR," 1 test failed from %s \n",func_name); \ printHK_color(RED_K,HK_TR," 1 test failed from %s \n",func_name); \
append_failed_list(func_name); \ append_failed_list(func_name); \
printf("Expected equality of these values:\n %s\n\tWhich is: %s\n %s\n\tWhich is: %s\n\n" \ printf("Expected equality of these values:\n %s\n\tWhich is: %s\n %s\n\tWhich is: %s\n\n" \
,var1_name, type##_TO_STR(var1), var2_name, type##_TO_STR(var1)); \ ,var1_name, type##_TO_STR(var1), var2_name, type##_TO_STR(var2)); \
return false; \ return false; \
} \ } \
} }
@@ -118,6 +118,7 @@ ASSERT_EQ_TYPE(TYPE_L_DOUBLE)
ASSERT_EQ_TYPE(TYPE_STRING) ASSERT_EQ_TYPE(TYPE_STRING)
void void
append_func(void (*run)(void), char *name){ append_func(void (*run)(void), char *name){
static struct func *f_static = NULL; static struct func *f_static = NULL;
+1 -1
View File
@@ -9,7 +9,6 @@
#include "src/tools_t/tools_t.h" #include "src/tools_t/tools_t.h"
struct func { struct func {
char *name; char *name;
void (*run)(void); void (*run)(void);
@@ -64,6 +63,7 @@ GEN_ASSERT_EQ_TYPE_FUNC(TYPE_STRING)
#define ASSERT_EQ_TYPE_L_DOUBLE(var1, var2) if(assert_eq_TYPE_L_DOUBLE(var1, var2, #var1, #var2, __func__) == false) return ; #define ASSERT_EQ_TYPE_L_DOUBLE(var1, var2) if(assert_eq_TYPE_L_DOUBLE(var1, var2, #var1, #var2, __func__) == false) return ;
#define ASSERT_EQ_TYPE_STRING(var1, var2) if(assert_eq_TYPE_STRING(var1, var2, #var1, #var2, __func__) == false) return ; #define ASSERT_EQ_TYPE_STRING(var1, var2) if(assert_eq_TYPE_STRING(var1, var2, #var1, #var2, __func__) == false) return ;
#define ASSERT_EQ(var1, var2) if(assert_eq_TYPE_L_INT(var1, var2, #var1, #var2, __func__) == false) return ;
#define CONCAT(x,y) x ## y #define CONCAT(x,y) x ## y
+28 -34
View File
@@ -15,25 +15,44 @@ GEN_TO_STR_N(TYPE_U_INT,22,"%u")
GEN_TO_STR_N(TYPE_L_INT,22,"%ld") GEN_TO_STR_N(TYPE_L_INT,22,"%ld")
GEN_TO_STR_N(TYPE_U_L_INT,22,"%lu") GEN_TO_STR_N(TYPE_U_L_INT,22,"%lu")
GEN_TO_STR_N(TYPE_SIZE_T,22,"%lu") GEN_TO_STR_N(TYPE_SIZE_T,22,"%lu")
GEN_TO_STR_N(TYPE_FLOAT,128,"%f") GEN_TO_STR_N(TYPE_FLOAT,128,"%.10f")
GEN_TO_STR_N(TYPE_DOUBLE,256,"%lf") GEN_TO_STR_N(TYPE_DOUBLE,256,"%.30lf")
GEN_TO_STR_N(TYPE_L_DOUBLE,256,"%Lf") GEN_TO_STR_N(TYPE_L_DOUBLE,256,"%.30Lf")
TYPE_STRING TYPE_STRING_TO_STR(TYPE_STRING var){ TYPE_STRING TYPE_STRING_TO_STR(TYPE_STRING var){
return var; return var;
} }
#define MIN_ABS_FLOAT 1 #define PRECISION_TYPE_CHAR 1
#define MULT_FLOAT_ERR 100000 #define PRECISION_TYPE_U_CHAR 1
#define PRECISION_TYPE_INT 1
#define PRECISION_TYPE_U_INT 1
#define PRECISION_TYPE_L_INT 1
#define PRECISION_TYPE_U_L_INT 1
#define PRECISION_TYPE_SIZE_T 1
// with gcc we can change value of theses PRECISION_TYPES below with: gcc -D PRECISION_TYPE_FLOAT=100000 for instance!
#ifndef PRECISION_TYPE_FLOAT
#define PRECISION_TYPE_FLOAT 100000000
#endif
#ifndef PRECISION_TYPE_DOUBLE
#define PRECISION_TYPE_DOUBLE 100000000000
#endif
#ifndef PRECISION_TYPE_L_DOUBLE
#define PRECISION_TYPE_L_DOUBLE 100000000000000
#endif
#define GENERATE_FUNCTION_NUMERIC(type)\ #define GENERATE_FUNCTION_NUMERIC(type)\
int COMPARE_N_##type(const void *a, const void *b){ \ int COMPARE_N_##type(const void *a, const void *b){ \
if (abs((*(type*)a - *(type*)b) * MULT_FLOAT_ERR) < MIN_ABS_FLOAT ) return 0; \ type diff = (*(type*)a - *(type*)b)*PRECISION_##type; \
if (*(type*)a > *(type*)b) return 1; \ debug_print(" diff = %s a=%s b=%s\n",type##_TO_STR(diff),type##_TO_STR(*(type*)a), type##_TO_STR(*(type*)b));\
return -1; }\ if ((diff < 1) && (diff > -1) ) return 0; \
return diff; \
} \
\ \
void COPY_ARRAY_##type(type *dst, const type *src, size_t size){ \ void COPY_ARRAY_##type(type *dst, const type *src, size_t size){ \
for(size_t i = 0; i < size; ++i) dst[i]=src[i]; }\ for(size_t i = 0; i < size; ++i) dst[i]=src[i]; \
} \
\ \
int int
@@ -105,28 +124,3 @@ GENERATE_FUNCTION_ALL(TYPE_STRING)
/*
int main()
{
unsigned int ui1 = 2545466;
unsigned int ui2 = 2544566;
printf(" %u >? %u = %d \n",ui1,ui2,COMPARE_N_TYPE_U_INT(&ui1,&ui2));
printf(" %u >? %u = %d \n",ui1,ui1,COMPARE_N_TYPE_U_INT(&ui1,&ui1));
printf(" %u >? %u = %d \n",ui2,ui1,COMPARE_N_TYPE_U_INT(&ui2,&ui1));
int i1 = 2545466;
int i2 = 2544566;
printf(" %d >? %d = %d \n",i1,i2,COMPARE_N_TYPE_U_INT(&i1,&i2));
printf(" %d >? %d = %d \n",i1,i1,COMPARE_N_TYPE_U_INT(&i1,&i1));
printf(" %d >? %d = %d \n",i2,i1,COMPARE_N_TYPE_U_INT(&i2,&i1));
int tabi[]={5,2,6,4,3,1};
int tabr[6]={0};
COPY_ARRAY_TYPE_INT(tabr,tabi,6);
for(size_t i=0; i<6; ++i) printf(" %d \n", tabr[i]);
printf("MIN = %d \n",MIN_ARRAY_TYPE_INT(tabr,6));
return 0;
}*/
+12
View File
@@ -6,6 +6,18 @@
#include <string.h> #include <string.h>
#include <stdbool.h> #include <stdbool.h>
// to define DEBUG in gcc cli do: gcc -D DEBUG=1 or 0 if need!
#ifndef DEBUG
#define DEBUG 0
#endif
#define debug_print(fmt, ...) \
do { if (DEBUG) fprintf(stderr, "%s:%d:%s(): " fmt, __FILE__, \
__LINE__, __func__, __VA_ARGS__); } while (0)
#define TYPE_CHAR char #define TYPE_CHAR char
#define TYPE_U_CHAR unsigned char #define TYPE_U_CHAR unsigned char
#define TYPE_INT int #define TYPE_INT int