From 5855c6c7939d5bac962368f1e7576f6484df2a8a Mon Sep 17 00:00:00 2001 From: Johannes Larsen Date: Tue, 21 Oct 2014 20:32:05 +0200 Subject: [PATCH 1/4] make-tests.sh: callable from other directories, so that CuTest can be a drop-in directory to any project --- make-tests.sh | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/make-tests.sh b/make-tests.sh index 3988c5e..2939ac0 100755 --- a/make-tests.sh +++ b/make-tests.sh @@ -6,17 +6,19 @@ # Author: Asim Jalis # Date: 01/08/2003 +mydir=`dirname "$0"` + if test $# -eq 0 ; then FILES=*.c ; else FILES=$* ; fi -echo ' +echo " /* This is auto-generated code. Edit at your own peril. */ #include #include -#include "CuTest.h" +#include \"$mydir/CuTest.h\" -' +" cat $FILES | grep '^void Test' | sed -e 's/(.*$//' \ @@ -26,7 +28,7 @@ cat $FILES | grep '^void Test' | echo \ ' -void RunAllTests(void) +void RunAllTests(void) { CuString *output = CuStringNew(); CuSuite* suite = CuSuiteNew(); @@ -51,5 +53,6 @@ echo \ int main(void) { RunAllTests(); + return 0; } ' From 9d325df1fc80e022120962c4188210f30e7b704a Mon Sep 17 00:00:00 2001 From: Johannes Larsen Date: Tue, 21 Oct 2014 20:37:39 +0200 Subject: [PATCH 2/4] CuAssertPtrEquals_LineMsg: do not discard const qualifier --- CuTest.c | 2 +- CuTest.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CuTest.c b/CuTest.c index f075cfb..de08347 100644 --- a/CuTest.c +++ b/CuTest.c @@ -223,7 +223,7 @@ void CuAssertDblEquals_LineMsg(CuTest* tc, const char* file, int line, const cha } void CuAssertPtrEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, - void* expected, void* actual) + const void* expected, const void* actual) { char buf[STRING_MAX]; if (expected == actual) return; diff --git a/CuTest.h b/CuTest.h index 603dc18..f899ec8 100644 --- a/CuTest.h +++ b/CuTest.h @@ -67,7 +67,7 @@ void CuAssertDblEquals_LineMsg(CuTest* tc, double expected, double actual, double delta); void CuAssertPtrEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, - void* expected, void* actual); + const void* expected, const void* actual); /* public assert functions */ From a8bf7ad3213140cbf838d2f1bcba6174fed619f6 Mon Sep 17 00:00:00 2001 From: Johannes Larsen Date: Tue, 21 Oct 2014 20:34:33 +0200 Subject: [PATCH 3/4] ignore *.o (object) files --- .gitignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5761abc --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.o From 915bf795ab151da26cd7bdd714a64a6f3b88c723 Mon Sep 17 00:00:00 2001 From: Johannes Larsen Date: Tue, 21 Oct 2014 23:24:29 +0200 Subject: [PATCH 4/4] added CuAssertStrnEquals with an argument explen passed along to strncmp --- CuTest.c | 12 +++++++++--- CuTest.h | 24 ++++++++++++++++-------- CuTestTest.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 11 deletions(-) diff --git a/CuTest.c b/CuTest.c index de08347..2cee6e3 100644 --- a/CuTest.c +++ b/CuTest.c @@ -177,13 +177,13 @@ void CuAssert_Line(CuTest* tc, const char* file, int line, const char* message, CuFail_Line(tc, file, line, NULL, message); } -void CuAssertStrEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, - const char* expected, const char* actual) +void CuAssertStrnEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, + const char* expected, size_t explen, const char* actual) { CuString string; if ((expected == NULL && actual == NULL) || (expected != NULL && actual != NULL && - strcmp(expected, actual) == 0)) + strncmp(expected, actual, explen) == 0)) { return; } @@ -202,6 +202,12 @@ void CuAssertStrEquals_LineMsg(CuTest* tc, const char* file, int line, const cha CuFailInternal(tc, file, line, &string); } +void CuAssertStrEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, + const char* expected, const char* actual) +{ + CuAssertStrnEquals_LineMsg(tc, file, line, message, expected, -1, actual); +} + void CuAssertIntEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, int expected, int actual) { diff --git a/CuTest.h b/CuTest.h index f899ec8..3428ccf 100644 --- a/CuTest.h +++ b/CuTest.h @@ -3,6 +3,7 @@ #include #include +#include /* CuString */ @@ -56,6 +57,9 @@ void CuTestDelete(CuTest *t); /* Internal versions of assert functions -- use the public versions */ void CuFail_Line(CuTest* tc, const char* file, int line, const char* message2, const char* message); void CuAssert_Line(CuTest* tc, const char* file, int line, const char* message, int condition); +void CuAssertStrnEquals_LineMsg(CuTest* tc, + const char* file, int line, const char* message, + const char* expected, size_t exlen, const char* actual); void CuAssertStrEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, const char* expected, const char* actual); @@ -75,14 +79,18 @@ void CuAssertPtrEquals_LineMsg(CuTest* tc, #define CuAssert(tc, ms, cond) CuAssert_Line((tc), __FILE__, __LINE__, (ms), (cond)) #define CuAssertTrue(tc, cond) CuAssert_Line((tc), __FILE__, __LINE__, "assert failed", (cond)) -#define CuAssertStrEquals(tc,ex,ac) CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) -#define CuAssertStrEquals_Msg(tc,ms,ex,ac) CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) -#define CuAssertIntEquals(tc,ex,ac) CuAssertIntEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) -#define CuAssertIntEquals_Msg(tc,ms,ex,ac) CuAssertIntEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) -#define CuAssertDblEquals(tc,ex,ac,dl) CuAssertDblEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac),(dl)) -#define CuAssertDblEquals_Msg(tc,ms,ex,ac,dl) CuAssertDblEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac),(dl)) -#define CuAssertPtrEquals(tc,ex,ac) CuAssertPtrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) -#define CuAssertPtrEquals_Msg(tc,ms,ex,ac) CuAssertPtrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) +#define CuAssertStrEquals(tc,ex,ac) CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) +#define CuAssertStrEquals_Msg(tc,ms,ex,ac) CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) +#define CuAssertStrnEquals(tc,ex,exlen,ac) CuAssertStrnEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(exlen),(ac)) +#define CuAssertStrnEquals_Msg(tc,ms,ex,exlen,ac) CuAssertStrnEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(exlen),(ac)) +#define CuAssertStrEquals(tc,ex,ac) CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) +#define CuAssertStrEquals_Msg(tc,ms,ex,ac) CuAssertStrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) +#define CuAssertIntEquals(tc,ex,ac) CuAssertIntEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) +#define CuAssertIntEquals_Msg(tc,ms,ex,ac) CuAssertIntEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) +#define CuAssertDblEquals(tc,ex,ac,dl) CuAssertDblEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac),(dl)) +#define CuAssertDblEquals_Msg(tc,ms,ex,ac,dl) CuAssertDblEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac),(dl)) +#define CuAssertPtrEquals(tc,ex,ac) CuAssertPtrEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) +#define CuAssertPtrEquals_Msg(tc,ms,ex,ac) CuAssertPtrEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) #define CuAssertPtrNotNull(tc,p) CuAssert_Line((tc),__FILE__,__LINE__,"null pointer unexpected",(p != NULL)) #define CuAssertPtrNotNullMsg(tc,msg,p) CuAssert_Line((tc),__FILE__,__LINE__,(msg),(p != NULL)) diff --git a/CuTestTest.c b/CuTestTest.c index 547f119..69dde93 100644 --- a/CuTestTest.c +++ b/CuTestTest.c @@ -609,6 +609,39 @@ void TestAssertStrEquals_FailStrNULL(CuTest* tc) CompareAsserts(tc, "CuAssertStrEquals_FailStrNULL failed", expectedMsg, tc2->message); } +void TestAssertStrnEquals(CuTest *tc) +{ + jmp_buf buf; + CuTest *tc2 = CuTestNew("TestAssertStrnEquals", zTestFails); + + const char* expected = "expected but was "; + const char *expectedMsg = "some text: expected but was "; + + tc2->jumpBuf = &buf; + if (setjmp(buf) == 0) + { + CuAssertStrnEquals(tc2, "hello", 0, "world"); + } + CuAssertTrue(tc, !tc2->failed); + if (setjmp(buf) == 0) + { + CuAssertStrnEquals_Msg(tc2, "some text", "hello", 0, "world"); + } + CuAssertTrue(tc, !tc2->failed); + if (setjmp(buf) == 0) + { + CuAssertStrnEquals(tc2, "hello", 5, "world"); + } + CuAssertTrue(tc, tc2->failed); + CompareAsserts(tc, "CuAssertStrEquals failed", expected, tc2->message); + if (setjmp(buf) == 0) + { + CuAssertStrnEquals_Msg(tc2, "some text", "hello", 5, "world"); + } + CuAssertTrue(tc, tc2->failed); + CompareAsserts(tc, "CuAssertStrEquals failed", expectedMsg, tc2->message); +} + void TestAssertIntEquals(CuTest* tc) { jmp_buf buf;