[ccan] [PATCH 2/3] mem: Correct testcases

David Gibson david at gibson.dropbear.id.au
Wed Oct 22 22:56:52 AEDT 2014


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: David Gibson <david at gibson.dropbear.id.au>
---
 ccan/mem/test/{run.c => api.c} | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
 rename ccan/mem/test/{run.c => api.c} (71%)

diff --git a/ccan/mem/test/run.c b/ccan/mem/test/api.c
similarity index 71%
rename from ccan/mem/test/run.c
rename to ccan/mem/test/api.c
index 3efd1d8..a7cfb9a 100644
--- a/ccan/mem/test/run.c
+++ b/ccan/mem/test/api.c
@@ -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();
 }
-- 
1.9.3



More information about the ccan mailing list