X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fopt%2Ftest%2Frun-iter.c;fp=ccan%2Fopt%2Ftest%2Frun-iter.c;h=147470fffd6c276ff22a41a26ae728a98b577721;hb=d89e5744f30b584ac4909ce1164af1289c41359b;hp=0000000000000000000000000000000000000000;hpb=f8b1841d26dabd23c053f5fc61dbd1536cdad43c;p=ccan diff --git a/ccan/opt/test/run-iter.c b/ccan/opt/test/run-iter.c new file mode 100644 index 00000000..147470ff --- /dev/null +++ b/ccan/opt/test/run-iter.c @@ -0,0 +1,76 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include "utils.h" +#include +#include + +/* Test iterators. */ +int main(int argc, char *argv[]) +{ + unsigned i, len; + const char *p; + + plan_tests(37); + opt_register_table(subtables, NULL); + + 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_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); + + return exit_status(); +}