mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 20:02:04 +00:00
clar: wide character comparisons
This commit is contained in:
parent
3410084675
commit
09debe1213
36
tests/clar.c
36
tests/clar.c
@ -11,6 +11,7 @@
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include <stdarg.h>
|
||||
#include <wchar.h>
|
||||
|
||||
/* required for sandboxing */
|
||||
#include <sys/types.h>
|
||||
@ -525,6 +526,41 @@ void clar__assert_equal(
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!strcmp("%ls", fmt)) {
|
||||
const wchar_t *wcs1 = va_arg(args, const wchar_t *);
|
||||
const wchar_t *wcs2 = va_arg(args, const wchar_t *);
|
||||
is_equal = (!wcs1 || !wcs2) ? (wcs1 == wcs2) : !wcscmp(wcs1, wcs2);
|
||||
|
||||
if (!is_equal) {
|
||||
if (wcs1 && wcs2) {
|
||||
int pos;
|
||||
for (pos = 0; wcs1[pos] == wcs2[pos] && wcs1[pos] && wcs2[pos]; ++pos)
|
||||
/* find differing byte offset */;
|
||||
p_snprintf(buf, sizeof(buf), "'%ls' != '%ls' (at byte %d)",
|
||||
wcs1, wcs2, pos);
|
||||
} else {
|
||||
p_snprintf(buf, sizeof(buf), "'%ls' != '%ls'", wcs1, wcs2);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(!strcmp("%.*ls", fmt)) {
|
||||
const wchar_t *wcs1 = va_arg(args, const wchar_t *);
|
||||
const wchar_t *wcs2 = va_arg(args, const wchar_t *);
|
||||
int len = va_arg(args, int);
|
||||
is_equal = (!wcs1 || !wcs2) ? (wcs1 == wcs2) : !wcsncmp(wcs1, wcs2, len);
|
||||
|
||||
if (!is_equal) {
|
||||
if (wcs1 && wcs2) {
|
||||
int pos;
|
||||
for (pos = 0; wcs1[pos] == wcs2[pos] && pos < len; ++pos)
|
||||
/* find differing byte offset */;
|
||||
p_snprintf(buf, sizeof(buf), "'%.*ls' != '%.*ls' (at byte %d)",
|
||||
len, wcs1, len, wcs2, pos);
|
||||
} else {
|
||||
p_snprintf(buf, sizeof(buf), "'%.*ls' != '%.*ls'", len, wcs1, len, wcs2);
|
||||
}
|
||||
}
|
||||
}
|
||||
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);
|
||||
|
@ -74,9 +74,15 @@ 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_wcs(wcs1,wcs2) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #wcs1 " != " #wcs2, 1, "%ls", (wcs1), (wcs2))
|
||||
#define cl_assert_equal_wcs_(wcs1,wcs2,note) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #wcs1 " != " #wcs2 " (" #note ")", 1, "%ls", (wcs1), (wcs2))
|
||||
|
||||
#define cl_assert_equal_strn(s1,s2,len) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2, 1, "%.*s", (s1), (s2), (int)(len))
|
||||
#define cl_assert_equal_strn_(s1,s2,len,note) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #s1 " != " #s2 " (" #note ")", 1, "%.*s", (s1), (s2), (int)(len))
|
||||
|
||||
#define cl_assert_equal_wcsn(wcs1,wcs2,len) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #wcs1 " != " #wcs2, 1, "%.*ls", (wcs1), (wcs2), (int)(len))
|
||||
#define cl_assert_equal_wcsn_(wcs1,wcs2,len,note) clar__assert_equal(__FILE__,__LINE__,"String mismatch: " #wcs1 " != " #wcs2 " (" #note ")", 1, "%.*ls", (wcs1), (wcs2), (int)(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))
|
||||
|
Loading…
Reference in New Issue
Block a user