Commit 2ab3ac5b authored by David Gibson's avatar David Gibson Committed by Rusty Russell

mem: Correct testcases

Currently the 'mem' module testcases use test/run.c even though they don't
rely on access to the module internals.  They're also missing an include
of mem.c, which has the effect that on systems with a C library memmem()
implementaiton, only that is tested, not the (re-)implementation in the
mem module itself.  This corrects that by moving run.c to api.c/

Additionally, the memmem() testcases don't cover the case where the
"needle" appears multiple times in the "haystack".  This patch also adds
such a test.
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
parent 992931f0
......@@ -5,16 +5,21 @@
int main(void)
{
char haystack1[] = "abcd\0efgh";
char haystack2[] = "ab\0ab\0ab\0ab";
char needle1[] = "ab";
char needle2[] = "d\0e";
/* This is how many tests you plan to run */
plan_tests(3);
plan_tests(5);
ok1(memmem(haystack1, sizeof(haystack1), needle1, 2) == haystack1);
ok1(memmem(haystack1, sizeof(haystack1), needle1, 3) == NULL);
ok1(memmem(haystack1, sizeof(haystack1), needle2, 3) == (haystack1 + 3));
ok1(memmem(haystack2, sizeof(haystack2), needle1, sizeof(needle1))
== haystack2);
ok1(memmem(haystack2, sizeof(haystack2), needle2, 3) == NULL);
/* This exits depending on whether all tests passed */
return exit_status();
}
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