add .gitignore and some asserts in test_t
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
*.swp
|
||||||
+25
-5
@@ -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()
|
||||||
|
|||||||
+3
-2
@@ -99,8 +99,8 @@ bool assert_eq_##type(type var1, type var2,
|
|||||||
INCR_FAIL_CNT; \
|
INCR_FAIL_CNT; \
|
||||||
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
@@ -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
|
||||||
|
|||||||
+29
-35
@@ -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;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user