From 806571f3523d64be51e541705da580f28ea8f9a9 Mon Sep 17 00:00:00 2001 From: Edward Thomson Date: Fri, 7 Mar 2014 00:28:18 -0800 Subject: Update clar to a0b00f0 --- tests/clar.c | 23 +++++++++++++++++++++++ tests/clar.h | 3 +++ 2 files changed, 26 insertions(+) diff --git a/tests/clar.c b/tests/clar.c index 6c7399a54..90aeb571d 100644 --- a/tests/clar.c +++ b/tests/clar.c @@ -65,7 +65,12 @@ # ifndef PRIxZ # define PRIxZ "Ix" # endif + +# ifdef _MSC_VER + typedef struct stat STAT_T; +# else typedef struct _stat STAT_T; +# endif #else # include /* waitpid(2) */ # include @@ -468,6 +473,24 @@ void clar__assert_equal( } } } + else if(!strcmp("%.*s", fmt)) { + const char *s1 = va_arg(args, const char *); + const char *s2 = va_arg(args, const char *); + size_t len = va_arg(args, size_t); + is_equal = (!s1 || !s2) ? (s1 == s2) : !strncmp(s1, s2, len); + + if (!is_equal) { + if (s1 && s2) { + size_t pos; + for (pos = 0; s1[pos] == s2[pos] && pos < len; ++pos) + /* find differing byte offset */; + p_snprintf(buf, sizeof(buf), "'%.*s' != '%.*s' (at byte %d)", + len, s1, len, s2, pos); + } else { + p_snprintf(buf, sizeof(buf), "'%.*s' != '%.*s'", len, s1, len, s2); + } + } + } else if (!strcmp("%"PRIuZ, fmt) || !strcmp("%"PRIxZ, fmt)) { size_t sz1 = va_arg(args, size_t), sz2 = va_arg(args, size_t); is_equal = (sz1 == sz2); diff --git a/tests/clar.h b/tests/clar.h index e1f244eba..7f77f7502 100644 --- a/tests/clar.h +++ b/tests/clar.h @@ -60,6 +60,9 @@ void cl_fixture_cleanup(const char *fixture_name); #define cl_assert_equal_s(s1,s2) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2, 1, "%s", (s1), (s2)) #define cl_assert_equal_s_(s1,s2,note) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2 " (" #note ")", 1, "%s", (s1), (s2)) +#define cl_assert_equal_strn(s1,s2,len) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2, 1, "%.*s", (s1), (s2), (size_t)(len)) +#define cl_assert_equal_strn_(s1,s2,len,note) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2 " (" #note ")", 1, "%.*s", (s1), (s2), (size_t)(len)) + #define cl_assert_equal_i(i1,i2) clar__assert_equal(__FILE__,__LINE__,#i1 " != " #i2, 1, "%d", (int)(i1), (int)(i2)) #define cl_assert_equal_i_(i1,i2,note) clar__assert_equal(__FILE__,__LINE__,#i1 " != " #i2 " (" #note ")", 1, "%d", (i1), (i2)) #define cl_assert_equal_i_fmt(i1,i2,fmt) clar__assert_equal(__FILE__,__LINE__,#i1 " != " #i2, 1, (fmt), (int)(i1), (int)(i2)) -- cgit v1.2.1