1 #include <ccan/tap/tap.h>
2 #include <ccan/opt/opt.c>
3 #include <ccan/opt/usage.c>
4 #include <ccan/opt/helpers.c>
5 #include <ccan/opt/parse.c>
7 static void show_10(char buf[OPT_SHOW_LEN], const void *arg)
13 static void show_max(char buf[OPT_SHOW_LEN], const void *arg)
15 memset(buf, 'X', OPT_SHOW_LEN);
18 /* Test add_desc helper. */
19 int main(int argc, char *argv[])
29 opt.desc = "0123456789 0";
34 ret = add_desc(NULL, &len, &max, 10, 30, &opt);
37 ok1(strcmp(ret, "01234 0123456789 0\n") == 0);
38 free(ret); len = max = 0;
41 ret = add_desc(NULL, &len, &max, 7, 30, &opt);
44 ok1(strcmp(ret, "01234 0123456789 0\n") == 0);
45 free(ret); len = max = 0;
47 /* Name doesn't fit. */
48 ret = add_desc(NULL, &len, &max, 6, 30, &opt);
53 " 0123456789 0\n") == 0);
54 free(ret); len = max = 0;
56 /* Description just fits. */
57 ret = add_desc(NULL, &len, &max, 7, 19, &opt);
60 ok1(strcmp(ret, "01234 0123456789 0\n") == 0);
61 free(ret); len = max = 0;
63 /* Description doesn't quite fit. */
64 ret = add_desc(NULL, &len, &max, 7, 18, &opt);
70 free(ret); len = max = 0;
72 /* Neither quite fits. */
73 ret = add_desc(NULL, &len, &max, 6, 17, &opt);
80 free(ret); len = max = 0;
82 /* With show function, fits just. */
84 ret = add_desc(NULL, &len, &max, 7, 41, &opt);
87 ok1(strcmp(ret, "01234 0123456789 0 (default: XXXXXXXXXX)\n") == 0);
88 free(ret); len = max = 0;
90 /* With show function, just too long. */
91 ret = add_desc(NULL, &len, &max, 7, 40, &opt);
95 "01234 0123456789 0\n"
96 " (default: XXXXXXXXXX)\n") == 0);
97 free(ret); len = max = 0;
99 /* With maximal show function, fits just (we assume OPT_SHOW_LEN = 80. */
101 ret = add_desc(NULL, &len, &max, 7, 114, &opt);
104 ok1(strcmp(ret, "01234 0123456789 0 (default: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...)\n") == 0);
105 free(ret); len = max = 0;
107 /* With maximal show function, just too long. */
108 ret = add_desc(NULL, &len, &max, 7, 113, &opt);
112 "01234 0123456789 0\n"
113 " (default: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...)\n") == 0);
114 free(ret); len = max = 0;
116 /* With added " <arg>". Fits, just. */
118 opt.type = OPT_HASARG;
119 ret = add_desc(NULL, &len, &max, 13, 25, &opt);
122 ok1(strcmp(ret, "01234 <arg> 0123456789 0\n") == 0);
123 free(ret); len = max = 0;
125 /* With added " <arg>". Name doesn't quite fit. */
126 ret = add_desc(NULL, &len, &max, 12, 25, &opt);
131 " 0123456789 0\n") == 0);
132 free(ret); len = max = 0;
134 /* With added " <arg>". Desc doesn't quite fit. */
135 ret = add_desc(NULL, &len, &max, 13, 24, &opt);
139 "01234 <arg> 0123456789\n"
141 free(ret); len = max = 0;
143 /* Empty description, with <arg> and default. Just fits. */
146 ret = add_desc(NULL, &len, &max, 13, 35, &opt);
149 ok1(strcmp(ret, "01234 <arg> (default: XXXXXXXXXX)\n") == 0);
150 free(ret); len = max = 0;
152 /* Empty description, with <arg> and default. Doesn't quite fit. */
155 ret = add_desc(NULL, &len, &max, 13, 34, &opt);
160 " (default: XXXXXXXXXX)\n") == 0);
161 free(ret); len = max = 0;
163 return exit_status();