test: always try and break every testcase up into two submessages

This is just another way that would have caught the bug introduced in
076fa15132 and fixed by
03b8eaa5f8.
event_stream
Cliff Frey 15 years ago committed by Ryan Dahl
parent deaee07c86
commit c83a018d05

@ -1129,38 +1129,57 @@ print_error (const char *raw, size_t error_location)
void void
test_message (const struct message *message) test_message (const struct message *message)
{ {
parser_init(message->type); size_t raw_len = strlen(message->raw);
size_t msg1len;
for (msg1len = 0; msg1len < raw_len; msg1len++) {
parser_init(message->type);
size_t read; size_t read;
const char *msg1 = message->raw;
const char *msg2 = msg1 + msg1len;
size_t msg2len = raw_len - msg1len;
read = parse(message->raw, strlen(message->raw)); if (msg1len) {
read = parse(msg1, msg1len);
if (message->upgrade && parser->upgrade) goto test; if (message->upgrade && parser->upgrade) goto test;
if (read != strlen(message->raw)) { if (read != msg1len) {
print_error(message->raw, read); print_error(msg1, read);
exit(1); exit(1);
} }
}
read = parse(NULL, 0);
if (message->upgrade && parser->upgrade) goto test; read = parse(msg2, msg2len);
if (read != 0) { if (message->upgrade && parser->upgrade) goto test;
print_error(message->raw, read);
exit(1);
}
test: if (read != msg2len) {
print_error(msg2, read);
exit(1);
}
if (num_messages != 1) { read = parse(NULL, 0);
printf("\n*** num_messages != 1 after testing '%s' ***\n\n", message->name);
exit(1);
}
if(!message_eq(0, message)) exit(1); if (message->upgrade && parser->upgrade) goto test;
parser_free(); if (read != 0) {
print_error(message->raw, read);
exit(1);
}
test:
if (num_messages != 1) {
printf("\n*** num_messages != 1 after testing '%s' ***\n\n", message->name);
exit(1);
}
if(!message_eq(0, message)) exit(1);
parser_free();
}
} }
void void

Loading…
Cancel
Save