From c8a771828e1d5fc8c476bbd650fafcfb7ba390a8 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Mon, 11 Nov 2019 23:09:57 -0500 Subject: Test getopt_config --- config.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'config.c') diff --git a/config.c b/config.c index 653ae16..befb1fc 100644 --- a/config.c +++ b/config.c @@ -136,3 +136,50 @@ int getopt_config( file = NULL; } } + +#ifdef TEST +#include +#include + +static const struct option LongOpts[] = { + { "foo", no_argument, NULL, 'f' }, + { "bar", required_argument, NULL, 'b' }, + {0}, +}; + +static char Test[] = { + "\n" + WS "\n" + "#foo\n" + WS "#foo\n" + "foo\n" + WS "foo\n" + "foo" WS "\n" + "bar=baz\n" + "bar" WS "=baz\n" + "bar=" WS "baz\n" + "bar" WS "=" WS "baz\n" + "bar = # baz \n" + "foo" +}; + +int main(void) { + int argc = 1; + char *argv[] = { "test", NULL }; + file = fmemopen(Test, sizeof(Test) - 1, "r"); + if (!file) err(EX_OSERR, "fmemopen"); + + for (int i = 0; i < 3; ++i) { + assert('f' == getopt_config(argc, argv, "", LongOpts, NULL)); + } + for (int i = 0; i < 4; ++i) { + assert('b' == getopt_config(argc, argv, "", LongOpts, NULL)); + assert(!strcmp("baz", optarg)); + } + assert('b' == getopt_config(argc, argv, "", LongOpts, NULL)); + assert(!strcmp("# baz ", optarg)); + assert('f' == getopt_config(argc, argv, "", LongOpts, NULL)); + assert(-1 == getopt_config(argc, argv, "", LongOpts, NULL)); +} + +#endif -- cgit 1.4.1