1 #include <ccan/tap/tap.h>
3 #include <ccan/opt/opt.c>
4 #include <ccan/opt/usage.c>
5 #include <ccan/opt/helpers.c>
6 #include <ccan/opt/parse.c>
9 int main(int argc, char *argv[])
11 const char *myname = argv[0];
15 opt_register_noarg("-a", test_noarg, NULL, "All");
16 opt_register_noarg("--aaa", test_noarg, NULL, "AAAAll");
17 opt_register_arg("-b|--bbb", test_arg, NULL, "bbb", "AAAAAAll");
19 ok1(strcmp(opt_table[0].names, "-a") == 0);
20 ok1(opt_table[0].type == OPT_NOARG);
21 ok1(strcmp(opt_table[1].names, "--aaa") == 0);
22 ok1(opt_table[1].type == OPT_NOARG);
23 ok1(strcmp(opt_table[2].names, "-b|--bbb") == 0);
24 ok1(opt_table[2].type == OPT_HASARG);
26 opt_table[0].type |= (1 << OPT_USER_START);
27 opt_table[1].type |= ((1 << OPT_USER_END)-1) - ((1 << OPT_USER_START)-1);
28 opt_table[2].type |= (1 << OPT_USER_END);
30 /* Should all work fine! */
31 ok1(parse_args(&argc, &argv, "-a", NULL));
33 ok1(argv[0] == myname);
34 ok1(test_cb_called == 1);
36 ok1(parse_args(&argc, &argv, "--aaa", NULL));
38 ok1(argv[0] == myname);
39 ok1(test_cb_called == 2);
41 /* This one needs an arg. */
42 ok1(parse_args(&argc, &argv, "-b", NULL) == false);
43 ok1(test_cb_called == 2);
44 ok1(parse_args(&argc, &argv, "-b", "bbb", NULL));
46 ok1(argv[0] == myname);
48 ok1(test_cb_called == 3);
50 ok1(parse_args(&argc, &argv, "--bbb", "bbb", NULL));
52 ok1(argv[0] == myname);
54 ok1(test_cb_called == 4);
56 /* parse_args allocates argv */