libsheepy

C lib for handling text files, strings and json like data structure with an object oriented system
git clone https://spartatek.se/git/libsheepy.git
Log | Files | Refs | README | LICENSE

CuTest.h (6089B)


      1 #ifndef CU_TEST_H
      2 #define CU_TEST_H
      3 
      4 #include <setjmp.h>
      5 #include <stdarg.h>
      6 #include <stdint.h>
      7 
      8 #define CUTEST_VERSION  "CuTest 1.5b"
      9 
     10 /* CuString */
     11 
     12 char* CuStrAlloc(int size);
     13 char* CuStrCopy(const char* old);
     14 
     15 #define CU_ALLOC(TYPE)		((TYPE*) malloc(sizeof(TYPE)))
     16 
     17 #define HUGE_STRING_LEN	8192
     18 #define STRING_MAX		256
     19 #define STRING_INC		256
     20 
     21 typedef struct
     22 {
     23 	int length;
     24 	int size;
     25 	char* buffer;
     26 } CuString;
     27 
     28 void CuStringInit(CuString* str);
     29 CuString* CuStringNew(void);
     30 void CuStringRead(CuString* str, const char* path);
     31 void CuStringAppend(CuString* str, const char* text);
     32 void CuStringAppendChar(CuString* str, char ch);
     33 void CuStringAppendFormat(CuString* str, const char* format, ...);
     34 void CuStringInsert(CuString* str, const char* text, int pos);
     35 void CuStringResize(CuString* str, int newSize);
     36 void CuStringDelete(CuString* str);
     37 
     38 /* CuTest */
     39 
     40 typedef struct CuTest CuTest;
     41 
     42 typedef void (*TestFunction)(CuTest *);
     43 
     44 struct CuTest
     45 {
     46 	char* name;
     47 	TestFunction function;
     48 	int failed;
     49 	int ran;
     50 	CuString *message;
     51 	jmp_buf *jumpBuf;
     52 };
     53 
     54 void CuTestInit(CuTest* t, const char* name, TestFunction function);
     55 CuTest* CuTestNew(const char* name, TestFunction function);
     56 void CuTestRun(CuTest* tc);
     57 void CuTestDelete(CuTest *t);
     58 
     59 /* Internal versions of assert functions -- use the public versions */
     60 void CuFail_Line(CuTest* tc, const char* file, int line, const char* message2, const char* message);
     61 void CuAssert_Line(CuTest* tc, const char* file, int line, const char* message, int condition);
     62 void CuAssertStrEquals_LineMsg(CuTest* tc,
     63 	const char* file, int line, const char* message,
     64 	const char* expected, const char* actual);
     65 void CuAssertDblEquals_LineMsg(CuTest* tc,
     66 	const char* file, int line, const char* message,
     67 	double expected, double actual, double delta);
     68 
     69 /* Remy Noulin changes */
     70 void CuAssertIntEquals_LineMsg(CuTest* tc,
     71 	const char* file, int line, const char* message,
     72 	int64_t expected, int64_t actual);
     73 void CuAssertStrNotEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message,
     74 	const char* expected, const char* actual);
     75 void CuAssertPtrEquals_LineMsg(CuTest* tc,
     76 	const char* file, int line, const char* message,
     77 	const void* expected, const void* actual);
     78 void CuAssertPtrNotEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message,
     79 	const void* expected, const void* actual);
     80 void CuAssertUintEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message,
     81 	uint64_t expected, uint64_t actual);
     82 void CuAssertUintNotEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message,
     83 	uint64_t expected, uint64_t actual);
     84 void CuAssertIntNotEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message,
     85 	int64_t expected, int64_t actual);
     86 /* End Remy Noulin changes */
     87 
     88 /* public assert functions */
     89 
     90 #define CuFail(tc, ms)                        CuFail_Line(  (tc), __FILE__, __LINE__, NULL, (ms))
     91 #define CuAssert(tc, ms, cond)                CuAssert_Line((tc), __FILE__, __LINE__, (ms), (cond))
     92 #define CuAssertTrue(tc, cond)                CuAssert_Line((tc), __FILE__, __LINE__, "assert failed", (cond))
     93 
     94 #define CuAssertStrEquals(tc,ex,ac)           CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
     95 #define CuAssertStrEquals_Msg(tc,ms,ex,ac)    CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
     96 #define CuAssertIntEquals(tc,ex,ac)           CuAssertIntEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
     97 #define CuAssertIntEquals_Msg(tc,ms,ex,ac)    CuAssertIntEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
     98 #define CuAssertDblEquals(tc,ex,ac,dl)        CuAssertDblEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac),(dl))
     99 #define CuAssertDblEquals_Msg(tc,ms,ex,ac,dl) CuAssertDblEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac),(dl))
    100 #define CuAssertPtrEquals(tc,ex,ac)           CuAssertPtrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
    101 #define CuAssertPtrEquals_Msg(tc,ms,ex,ac)    CuAssertPtrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
    102 
    103 #define CuAssertPtrNotNull(tc,p)        CuAssert_Line((tc),__FILE__,__LINE__,"null pointer unexpected",((p) != NULL))
    104 #define CuAssertPtrNotNullMsg(tc,msg,p) CuAssert_Line((tc),__FILE__,__LINE__,(msg),((p) != NULL))
    105 
    106 /* Remy Noulin changes */
    107 #define CuAssertStrNotEquals(tc,ex,ac)           CuAssertStrNotEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
    108 #define CuAssertStrNotEquals_Msg(tc,ms,ex,ac)    CuAssertStrNotEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
    109 #define CuAssertUintEquals(tc,ex,ac)             CuAssertUintEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
    110 #define CuAssertUintEquals_Msg(tc,ms,ex,ac)      CuAssertUintEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
    111 #define CuAssertUintNotEquals(tc,ex,ac)          CuAssertUintNotEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
    112 #define CuAssertUintNotEquals_Msg(tc,ms,ex,ac)   CuAssertUintNotEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
    113 #define CuAssertIntNotEquals(tc,ex,ac)           CuAssertIntNotEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
    114 #define CuAssertIntNotEquals_Msg(tc,ms,ex,ac)    CuAssertIntNotEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
    115 #define CuAssertPtrNotEquals(tc,ex,ac)           CuAssertPtrNotEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac))
    116 #define CuAssertPtrNotEquals_Msg(tc,ms,ex,ac)    CuAssertPtrNotEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac))
    117 /* End Remy Noulin changes */
    118 
    119 /* CuSuite */
    120 
    121 #define MAX_TEST_CASES	16384
    122 
    123 #define SUITE_ADD_TEST(SUITE,TEST)	CuSuiteAdd(SUITE, CuTestNew(#TEST, TEST))
    124 
    125 typedef struct
    126 {
    127 	int count;
    128 	CuTest* list[MAX_TEST_CASES];
    129 	int failCount;
    130 
    131 } CuSuite;
    132 
    133 
    134 void CuSuiteInit(CuSuite* testSuite);
    135 CuSuite* CuSuiteNew(void);
    136 void CuSuiteDelete(CuSuite *testSuite);
    137 void CuSuiteAdd(CuSuite* testSuite, CuTest *testCase);
    138 void CuSuiteAddSuite(CuSuite* testSuite, CuSuite* testSuite2);
    139 void CuSuiteRun(CuSuite* testSuite);
    140 void CuSuiteSummary(CuSuite* testSuite, CuString* summary);
    141 void CuSuiteDetails(CuSuite* testSuite, CuString* details);
    142 
    143 #endif /* CU_TEST_H */