diff options
author | June McEnroe <june@causal.agency> | 2019-11-11 23:09:57 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2019-11-11 23:09:57 -0500 |
commit | c8a771828e1d5fc8c476bbd650fafcfb7ba390a8 (patch) | |
tree | 7d90049c6668c3fe54fc69ba12afcafec2440ce9 /config.c | |
parent | Add userhost-in-names to manual (diff) | |
download | pounce-c8a771828e1d5fc8c476bbd650fafcfb7ba390a8.tar.gz pounce-c8a771828e1d5fc8c476bbd650fafcfb7ba390a8.zip |
Test getopt_config
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 47 |
1 files changed, 47 insertions, 0 deletions
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 <assert.h> +#include <sysexits.h> + +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 |