Commit 0ad5c845 by Edward Thomson

structinit test: show which byte differs

parent 1d67e8fd
...@@ -25,11 +25,8 @@ do { \ ...@@ -25,11 +25,8 @@ do { \
structname structname##_func_latest; \ structname structname##_func_latest; \
int structname##_curr_ver = structver - 1; \ int structname##_curr_ver = structver - 1; \
cl_git_pass(funcinitname(&structname##_func_latest, structver)); \ cl_git_pass(funcinitname(&structname##_func_latest, structver)); \
cl_check_( \ options_cmp(&structname##_macro_latest, &structname##_func_latest, \
memcmp(&structname##_macro_latest, &structname##_func_latest, \ sizeof(structname), STRINGIFY(structname)); \
sizeof(structname)) == 0, \
"Macro-based and function-based initializer for " STRINGIFY(structname) \
" are not equivalent."); \
\ \
while (structname##_curr_ver > 0) \ while (structname##_curr_ver > 0) \
{ \ { \
...@@ -39,6 +36,24 @@ do { \ ...@@ -39,6 +36,24 @@ do { \
}\ }\
} while(0) } while(0)
static void options_cmp(void *one, void *two, size_t size, const char *name)
{
size_t i;
for (i = 0; i < size; i++) {
if (((char *)one)[i] != ((char *)two)[i]) {
char desc[1024];
p_snprintf(desc, 1024, "Difference in %s at byte %d: macro=%u / func=%u",
name, i, ((char *)one)[i], ((char *)two)[i]);
clar__fail(__FILE__, __LINE__,
"Difference between macro and function options initializer",
desc, 0);
return;
}
}
}
void test_structinit_structinit__compare(void) void test_structinit_structinit__compare(void)
{ {
/* blame */ /* blame */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment