X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fopt%2Ftest%2Frun-consume_words.c;h=9f164656abd602d0b4fe414664bb51c498a62553;hp=98b2e1e67a019b32e3c8a9d2f68cea5d5d241bef;hb=8071ba125bb6893b88c02353638eeac220cb99c1;hpb=76565e3d88495f0239ab59ee1ca5f0b515897832 diff --git a/ccan/opt/test/run-consume_words.c b/ccan/opt/test/run-consume_words.c index 98b2e1e6..9f164656 100644 --- a/ccan/opt/test/run-consume_words.c +++ b/ccan/opt/test/run-consume_words.c @@ -7,31 +7,58 @@ /* Test consume_words helper. */ int main(int argc, char *argv[]) { - size_t start, len; + size_t prefix, len; + bool start = true; - plan_tests(13); + plan_tests(27); /* Every line over width. */ - len = consume_words("hello world", 1, &start); - ok1(start == 0); + len = consume_words("hello world", 1, &prefix, &start); + ok1(prefix == 0); + ok1(!start); ok1(len == strlen("hello")); - len = consume_words(" world", 1, &start); - ok1(start == 1); + len = consume_words(" world", 1, &prefix, &start); + ok1(prefix == 1); ok1(len == strlen("world")); - ok1(consume_words("", 1, &start) == 0); + ok1(!start); + ok1(consume_words("", 1, &prefix, &start) == 0); /* Same with width where won't both fit. */ - len = consume_words("hello world", 5, &start); - ok1(start == 0); + start = true; + len = consume_words("hello world", 5, &prefix, &start); + ok1(!start); + ok1(prefix == 0); ok1(len == strlen("hello")); - len = consume_words(" world", 5, &start); - ok1(start == 1); + len = consume_words(" world", 5, &prefix, &start); + ok1(!start); + ok1(prefix == 1); ok1(len == strlen("world")); - ok1(consume_words("", 5, &start) == 0); + ok1(consume_words("", 5, &prefix, &start) == 0); - len = consume_words("hello world", 11, &start); - ok1(start == 0); + start = true; + len = consume_words("hello world", 11, &prefix, &start); + ok1(!start); + ok1(prefix == 0); ok1(len == strlen("hello world")); - ok1(consume_words("", 11, &start) == 0); + ok1(consume_words("", 11, &prefix, &start) == 0); + + /* Now try a literal, should not be broken */ + start = true; + len = consume_words(" hello world", 5, &prefix, &start); + ok1(!start); + ok1(prefix == 1); + ok1(len == strlen("hello world")); + + /* A literal after an explicit \n also not broken */ + start = true; + len = consume_words("hi\n hello world", 5, &prefix, &start); + ok1(start); + ok1(prefix == 0); + ok1(len == strlen("hi\n")); + len = consume_words(" hello world", 5, &prefix, &start); + ok1(!start); + ok1(prefix == 1); + ok1(len == strlen("hello world")); + return exit_status(); }