tests/unittests/uri_parse: generate more sophisticated error message

This commit is contained in:
Martine Lenders 2020-04-01 08:42:25 +02:00
parent 413153704a
commit 004126a5e9
No known key found for this signature in database
GPG Key ID: CCD317364F63286F

View File

@ -24,22 +24,31 @@
{ .uri = u, .scheme = s, .userinfo = us, .host = h, .port = po, \ { .uri = u, .scheme = s, .userinfo = us, .host = h, .port = po, \
.path = pa, .query = q, .expected = e} .path = pa, .query = q, .expected = e}
#define VEC_CHECK(comp, i) \ #define VEC_CHECK(comp, i, vec_msg) \
do { \ do { \
if (ures.comp == NULL) { \ if (ures.comp == NULL) { \
TEST_ASSERT(validate_uris[i].comp[0] == '\0'); \ TEST_ASSERT(validate_uris[i].comp[0] == '\0'); \
} \ } \
else { \ else { \
TEST_ASSERT_EQUAL_INT(strlen(validate_uris[i].comp), \ TEST_ASSERT_EQUAL_INT(strlen(validate_uris[i].comp), \
ures.comp##_len); \ ures.comp##_len); \
TEST_ASSERT_MESSAGE(0 == \ vec_msg[0] = '\0'; \
strncmp(ures.comp, \ stdimpl_strcat(vec_msg, "Unexpected " # comp " member \""); \
validate_uris[i].comp, \ stdimpl_strcat(vec_msg, validate_uris[i].comp); \
strlen(validate_uris[i].comp)), \ stdimpl_strcat(vec_msg, "\" for \""); \
"Unexpected " # comp " member"); \ stdimpl_strcat(vec_msg, validate_uris[i].uri); \
} \ stdimpl_strcat(vec_msg, "\""); \
TEST_ASSERT_MESSAGE(0 == \
strncmp(ures.comp, \
validate_uris[i].comp, \
strlen(validate_uris[i].comp)), \
vec_msg); \
} \
} while (0) } while (0)
#define VEC_MSG_LEN (sizeof("Unexpected userinfo member \"\" for \"\"") + \
64U + 8U)
typedef struct { typedef struct {
char uri[64]; char uri[64];
char scheme[8]; char scheme[8];
@ -275,6 +284,8 @@ static const validate_t validate_uris[26] = {
0), 0),
}; };
static char _failure_msg[VEC_MSG_LEN];
static void test_uri_parser__validate(void) static void test_uri_parser__validate(void)
{ {
uri_parser_result_t ures; uri_parser_result_t ures;
@ -282,12 +293,12 @@ static void test_uri_parser__validate(void)
int res = uri_parser_process_string(&ures, validate_uris[i].uri); int res = uri_parser_process_string(&ures, validate_uris[i].uri);
TEST_ASSERT_EQUAL_INT(validate_uris[i].expected, res); TEST_ASSERT_EQUAL_INT(validate_uris[i].expected, res);
if (res == 0) { if (res == 0) {
VEC_CHECK(scheme, i); VEC_CHECK(scheme, i, _failure_msg);
VEC_CHECK(userinfo, i); VEC_CHECK(userinfo, i, _failure_msg);
VEC_CHECK(host, i); VEC_CHECK(host, i, _failure_msg);
VEC_CHECK(port, i); VEC_CHECK(port, i, _failure_msg);
VEC_CHECK(path, i); VEC_CHECK(path, i, _failure_msg);
VEC_CHECK(query, i); VEC_CHECK(query, i, _failure_msg);
} }
} }
} }