X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/632637c7b2e1a7bc9cd95b3225cd8a70ee522368..6049fe0e789884ac0589190495d68e470c0fe19c:/lib/test.c diff --git a/lib/test.c b/lib/test.c index 635c245..02deb02 100644 --- a/lib/test.c +++ b/lib/test.c @@ -52,6 +52,7 @@ #include "selection.h" #include "syscalls.h" #include "kvp.h" +#include "sink.h" static int tests, errors; static int fail_first; @@ -855,6 +856,34 @@ static void test_kvp(void) { "abc%25%20%2b%0a"); } +static void test_sink(void) { + struct sink *s; + struct dynstr d[1]; + FILE *fp; + char *l; + + fprintf(stderr, "test_sink\n"); + + fp = tmpfile(); + assert(fp != 0); + s = sink_stdio("tmpfile", fp); + insist(sink_printf(s, "test: %d\n", 999) == 10); + insist(sink_printf(s, "wibble: %s\n", "foobar") == 15); + rewind(fp); + insist(inputline("tmpfile", fp, &l, '\n') == 0); + check_string(l, "test: 999"); + insist(inputline("tmpfile", fp, &l, '\n') == 0); + check_string(l, "wibble: foobar"); + insist(inputline("tmpfile", fp, &l, '\n') == -1); + + dynstr_init(d); + s = sink_dynstr(d); + insist(sink_printf(s, "test: %d\n", 999) == 10); + insist(sink_printf(s, "wibble: %s\n", "foobar") == 15); + dynstr_terminate(d); + check_string(d->vec, "test: 999\nwibble: foobar\n"); +} + int main(void) { fail_first = !!getenv("FAIL_FIRST"); insist('\n' == 0x0A); @@ -893,6 +922,7 @@ int main(void) { /* printf.c */ /* queue.c */ /* sink.c */ + test_sink(); /* snprintf.c */ /* split.c */ /* syscalls.c */