From 786fd5a12b2a0d7f167f5eebf83ff8b96e532c3f Mon Sep 17 00:00:00 2001 From: David Gibson Date: Wed, 3 Oct 2012 23:20:46 +1000 Subject: [PATCH] rfc822: Move check_header into helper.c The check_header() test function will be useful to more than one testcase so this patch moves it into the common helper.c file. Signed-off-by: David Gibson --- ccan/rfc822/test/helper.c | 40 ++++++++++++++++++++++++++ ccan/rfc822/test/helper.h | 7 +++++ ccan/rfc822/test/run-hdr-and-body.c | 44 ++--------------------------- 3 files changed, 49 insertions(+), 42 deletions(-) diff --git a/ccan/rfc822/test/helper.c b/ccan/rfc822/test/helper.c index 36a2a065..f16803e2 100644 --- a/ccan/rfc822/test/helper.c +++ b/ccan/rfc822/test/helper.c @@ -56,3 +56,43 @@ void failtest_setup(int argc, char *argv[]) rfc822_set_allocation_failure_handler(allocation_failure_continue); talloc_set_allocator(malloc_wrapper, free_wrapper, realloc_wrapper); } + +void check_header(struct rfc822_msg *msg, struct rfc822_header *h, + const char *name, const char *val, + int crlf) +{ + struct bytestring hname, hvalue, hfull; + size_t namelen = strlen(name); + size_t valuelen = strlen(val); + size_t nln = crlf ? 2 : 1; + size_t fulllen = namelen + valuelen + 1 + nln; + + ok(rfc822_header_errors(msg, h) == 0, "Header valid"); + allocation_failure_check(); + + hname = rfc822_header_raw_name(msg, h); + allocation_failure_check(); + + ok(hname.ptr && bytestring_eq(hname, bytestring_from_string(name)), + "Header name \"%.*s\"", (int)hname.len, hname.ptr); + + hvalue = rfc822_header_raw_value(msg, h); + allocation_failure_check(); + + ok(hvalue.ptr && ((valuelen + nln) == hvalue.len) + && (memcmp(val, hvalue.ptr, valuelen) == 0) + && (!crlf || (hvalue.ptr[hvalue.len - 2] == '\r')) + && (hvalue.ptr[hvalue.len - 1] == '\n'), + "Header value"); + + hfull = rfc822_header_raw_content(msg, h); + allocation_failure_check(); + + ok(hfull.ptr && (fulllen == hfull.len) + && (memcmp(name, hfull.ptr, namelen) == 0) + && (hfull.ptr[namelen] == ':') + && (memcmp(val, hfull.ptr + namelen + 1, valuelen) == 0) + && (!crlf || (hfull.ptr[fulllen-2] == '\r')) + && (hfull.ptr[fulllen-1] == '\n'), + "Full header"); +} diff --git a/ccan/rfc822/test/helper.h b/ccan/rfc822/test/helper.h index 7e1e67b2..2bdb9c43 100644 --- a/ccan/rfc822/test/helper.h +++ b/ccan/rfc822/test/helper.h @@ -1,2 +1,9 @@ +#include + void failtest_setup(int argc, char *argv[]); void allocation_failure_check(void); + +#define CHECK_HEADER_NUMTESTS 4 +void check_header(struct rfc822_msg *msg, struct rfc822_header *h, + const char *name, const char *val, + int crlf); diff --git a/ccan/rfc822/test/run-hdr-and-body.c b/ccan/rfc822/test/run-hdr-and-body.c index fe4515a3..956a6bd6 100644 --- a/ccan/rfc822/test/run-hdr-and-body.c +++ b/ccan/rfc822/test/run-hdr-and-body.c @@ -27,47 +27,6 @@ } \ } while (0) -static void check_header(struct rfc822_msg *msg, - struct rfc822_header *h, - const char *name, const char *val, - int crlf) -{ - struct bytestring hname, hvalue, hfull; - size_t namelen = strlen(name); - size_t valuelen = strlen(val); - size_t nln = crlf ? 2 : 1; - size_t fulllen = namelen + valuelen + 1 + nln; - - ok(rfc822_header_errors(msg, h) == 0, "Header valid"); - allocation_failure_check(); - - hname = rfc822_header_raw_name(msg, h); - allocation_failure_check(); - - ok(hname.ptr && bytestring_eq(hname, bytestring_from_string(name)), - "Header name \"%.*s\"", (int)hname.len, hname.ptr); - - hvalue = rfc822_header_raw_value(msg, h); - allocation_failure_check(); - - ok(hvalue.ptr && ((valuelen + nln) == hvalue.len) - && (memcmp(val, hvalue.ptr, valuelen) == 0) - && (!crlf || (hvalue.ptr[hvalue.len - 2] == '\r')) - && (hvalue.ptr[hvalue.len - 1] == '\n'), - "Header value"); - - hfull = rfc822_header_raw_content(msg, h); - allocation_failure_check(); - - ok(hfull.ptr && (fulllen == hfull.len) - && (memcmp(name, hfull.ptr, namelen) == 0) - && (hfull.ptr[namelen] == ':') - && (memcmp(val, hfull.ptr + namelen + 1, valuelen) == 0) - && (!crlf || (hfull.ptr[fulllen-2] == '\r')) - && (hfull.ptr[fulllen-1] == '\n'), - "Full header"); -} - static void test_bodyhdr(const struct aexample *e, const char *buf, size_t len, const char *exname, int crlf) { @@ -153,7 +112,8 @@ int main(int argc, char *argv[]) struct aexample *e; /* This is how many tests you plan to run */ - plan_tests(20*num_aexamples() + 40*num_aexample_hdrs()); + plan_tests(20*num_aexamples() + + (36 + CHECK_HEADER_NUMTESTS)*num_aexample_hdrs()); failtest_setup(argc, argv); -- 2.39.2