06bf58a0ce36b71a7993a7b7cadad542c4998d2f
[ccan] / ccan / opt / test / run-unregister.c
1 #include <ccan/tap/tap.h>
2 #include <stdlib.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>
7 #include "utils.h"
8
9 int main(int argc, char *argv[])
10 {
11         const char *myname = argv[0];
12
13         plan_tests(14);
14
15         /* Simple short arg.*/
16         opt_register_noarg("--aaa|-a", test_noarg, NULL, "AAAAAAll");
17         opt_register_noarg("-b", test_noarg, NULL, "AAAAAAll");
18
19         /* We can't unregister wrong ones, but can unregister correct one */
20         ok1(!opt_unregister("--aaa"));
21         ok1(!opt_unregister("-a"));
22         ok1(opt_unregister("--aaa|-a"));
23
24         /* Arg parsing works as if we'd never registered it */
25         ok1(parse_args(&argc, &argv, "-b", NULL));
26         ok1(argc == 1);
27         ok1(argv[0] == myname);
28         ok1(argv[1] == NULL);
29         ok1(test_cb_called == 1);
30
31         ok1(!parse_args(&argc, &argv, "--aaa", NULL));
32
33         /* We can still add another one OK. */
34         opt_register_noarg("-c", test_noarg, NULL, "AAAAAAll");
35         ok1(parse_args(&argc, &argv, "-c", NULL));
36         ok1(argc == 1);
37         ok1(argv[0] == myname);
38         ok1(argv[1] == NULL);
39         ok1(test_cb_called == 2);
40
41         /* parse_args allocates argv */
42         free(argv);
43         return exit_status();
44 }