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