mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-08 03:44:22 -04:00
Test some formerly untested prepend cases of evbuffer. Now evbuffer coverage is over 80 percent.
svn:r1108
This commit is contained in:
parent
9e3e7b360d
commit
e7fd1034cf
@ -677,6 +677,63 @@ end:
|
||||
evbuffer_free(buf2);
|
||||
}
|
||||
|
||||
/* Some cases that we didn't get in test_evbuffer() above, for more coverage. */
|
||||
static void
|
||||
test_evbuffer_prepend(void *ptr)
|
||||
{
|
||||
struct evbuffer *buf1 = NULL, *buf2 = NULL;
|
||||
char tmp[128];
|
||||
int n;
|
||||
|
||||
buf1 = evbuffer_new();
|
||||
tt_assert(buf1);
|
||||
|
||||
evbuffer_add(buf1, "This string has 29 characters", 29);
|
||||
|
||||
/* Case 1: Prepend goes entirely in new chunk. */
|
||||
evbuffer_prepend(buf1, "Short.", 6);
|
||||
evbuffer_validate(buf1);
|
||||
|
||||
/* Case 2: prepend goes entirely in first chunk. */
|
||||
evbuffer_drain(buf1, 6+11);
|
||||
evbuffer_prepend(buf1, "it", 2);
|
||||
evbuffer_validate(buf1);
|
||||
tt_assert(!memcmp(buf1->first->buffer+buf1->first->misalign,
|
||||
"it has", 6));
|
||||
|
||||
/* Case 3: prepend is split over multiple chunks. */
|
||||
evbuffer_prepend(buf1, "It is no longer true to say ", 28);
|
||||
evbuffer_validate(buf1);
|
||||
n = evbuffer_remove(buf1, tmp, sizeof(tmp)-1);
|
||||
tmp[n]='\0';
|
||||
tt_str_op(tmp,==,"It is no longer true to say it has 29 characters");
|
||||
|
||||
buf2 = evbuffer_new();
|
||||
tt_assert(buf2);
|
||||
|
||||
/* Case 4: prepend a buffer to an empty buffer. */
|
||||
n = 999;
|
||||
evbuffer_add_printf(buf1, "Here is string %d. ", n++);
|
||||
evbuffer_prepend_buffer(buf2, buf1);
|
||||
evbuffer_validate(buf2);
|
||||
|
||||
/* Case 5: prepend a buffer to a nonempty buffer. */
|
||||
evbuffer_add_printf(buf1, "Here is string %d. ", n++);
|
||||
evbuffer_prepend_buffer(buf2, buf1);
|
||||
evbuffer_validate(buf2);
|
||||
n = evbuffer_remove(buf2, tmp, sizeof(tmp)-1);
|
||||
tmp[n]='\0';
|
||||
tt_str_op(tmp,==,"Here is string 1000. Here is string 999. ");
|
||||
|
||||
end:
|
||||
if (buf1)
|
||||
evbuffer_free(buf1);
|
||||
if (buf2)
|
||||
evbuffer_free(buf2);
|
||||
|
||||
}
|
||||
|
||||
|
||||
struct testcase_t evbuffer_testcases[] = {
|
||||
{ "evbuffer", test_evbuffer, 0, NULL, NULL },
|
||||
{ "reference", test_evbuffer_reference, 0, NULL, NULL },
|
||||
@ -685,6 +742,7 @@ struct testcase_t evbuffer_testcases[] = {
|
||||
{ "find", test_evbuffer_find, 0, NULL, NULL },
|
||||
{ "callbacks", test_evbuffer_callbacks, 0, NULL, NULL },
|
||||
{ "add_reference", test_evbuffer_add_reference, 0, NULL, NULL },
|
||||
{ "prepend", test_evbuffer_prepend, 0, NULL, NULL },
|
||||
|
||||
END_OF_TESTCASES
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user