X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fopt%2Ftest%2Frun-iter.c;h=d34fd6dc176a844f166d0fb32f9450f7bcd0a9f7;hp=147470fffd6c276ff22a41a26ae728a98b577721;hb=HEAD;hpb=d89e5744f30b584ac4909ce1164af1289c41359b;ds=sidebyside diff --git a/ccan/opt/test/run-iter.c b/ccan/opt/test/run-iter.c index 147470ff..d34fd6dc 100644 --- a/ccan/opt/test/run-iter.c +++ b/ccan/opt/test/run-iter.c @@ -1,4 +1,3 @@ -#define _GNU_SOURCE #include #include #include @@ -7,70 +6,76 @@ #include "utils.h" #include #include +#include +#include /* Test iterators. */ -int main(int argc, char *argv[]) +int main(void) { - unsigned i, len; + unsigned j, i, len = 0; const char *p; - plan_tests(37); - opt_register_table(subtables, NULL); + plan_tests(37 * 2); + for (j = 0; j < 2; j ++) { + reset_options(); + /* Giving subtable a title makes an extra entry! */ + opt_register_table(subtables, j == 0 ? NULL : "subtable"); - p = first_lopt(&i, &len); - ok1(i == 0); - ok1(len == 3); - ok1(strncmp(p, "jjj", len) == 0); - p = next_lopt(p, &i, &len); - ok1(i == 0); - ok1(len == 3); - ok1(strncmp(p, "lll", len) == 0); - p = next_lopt(p, &i, &len); - ok1(i == 1); - ok1(len == 3); - ok1(strncmp(p, "mmm", len) == 0); - p = next_lopt(p, &i, &len); - ok1(i == 5); - ok1(len == 3); - ok1(strncmp(p, "ddd", len) == 0); - p = next_lopt(p, &i, &len); - ok1(i == 6); - ok1(len == 3); - ok1(strncmp(p, "eee", len) == 0); - p = next_lopt(p, &i, &len); - ok1(i == 7); - ok1(len == 3); - ok1(strncmp(p, "ggg", len) == 0); - p = next_lopt(p, &i, &len); - ok1(i == 8); - ok1(len == 3); - ok1(strncmp(p, "hhh", len) == 0); - p = next_lopt(p, &i, &len); - ok1(!p); + p = first_lopt(&i, &len); + ok1(i == j + 0); + ok1(len == 3); + ok1(strncmp(p, "jjj", len) == 0); + p = next_lopt(p, &i, &len); + ok1(i == j + 0); + ok1(len == 3); + ok1(strncmp(p, "lll", len) == 0); + p = next_lopt(p, &i, &len); + ok1(i == j + 1); + ok1(len == 3); + ok1(strncmp(p, "mmm", len) == 0); + p = next_lopt(p, &i, &len); + ok1(i == j + 5); + ok1(len == 3); + ok1(strncmp(p, "ddd", len) == 0); + p = next_lopt(p, &i, &len); + ok1(i == j + 6); + ok1(len == 3); + ok1(strncmp(p, "eee", len) == 0); + p = next_lopt(p, &i, &len); + ok1(i == j + 7); + ok1(len == 3); + ok1(strncmp(p, "ggg", len) == 0); + p = next_lopt(p, &i, &len); + ok1(i == j + 8); + ok1(len == 3); + ok1(strncmp(p, "hhh", len) == 0); + p = next_lopt(p, &i, &len); + ok1(!p); - p = first_sopt(&i); - ok1(i == 0); - ok1(*p == 'j'); - p = next_sopt(p, &i); - ok1(i == 0); - ok1(*p == 'l'); - p = next_sopt(p, &i); - ok1(i == 1); - ok1(*p == 'm'); - p = next_sopt(p, &i); - ok1(i == 2); - ok1(*p == 'a'); - p = next_sopt(p, &i); - ok1(i == 3); - ok1(*p == 'b'); - p = next_sopt(p, &i); - ok1(i == 7); - ok1(*p == 'g'); - p = next_sopt(p, &i); - ok1(i == 8); - ok1(*p == 'h'); - p = next_sopt(p, &i); - ok1(!p); + p = first_sopt(&i); + ok1(i == j + 0); + ok1(*p == 'j'); + p = next_sopt(p, &i); + ok1(i == j + 0); + ok1(*p == 'l'); + p = next_sopt(p, &i); + ok1(i == j + 1); + ok1(*p == 'm'); + p = next_sopt(p, &i); + ok1(i == j + 2); + ok1(*p == 'a'); + p = next_sopt(p, &i); + ok1(i == j + 3); + ok1(*p == 'b'); + p = next_sopt(p, &i); + ok1(i == j + 7); + ok1(*p == 'g'); + p = next_sopt(p, &i); + ok1(i == j + 8); + ok1(*p == 'h'); + p = next_sopt(p, &i); + ok1(!p); + } return exit_status(); }