g_string_append_c(res_str, ' ');
}
- switch (item->type) {
+ switch (argpar_item_type(item)) {
case ARGPAR_ITEM_TYPE_OPT:
{
- const struct argpar_item_opt *const item_opt =
- (const void *) item;
+ const struct argpar_opt_descr * const descr =
+ argpar_item_opt_descr(item);
+ const char * const arg = argpar_item_opt_arg(item);
- if (item_opt->descr->long_name) {
+ if (descr->long_name) {
g_string_append_printf(res_str, "--%s",
- item_opt->descr->long_name);
+ descr->long_name);
- if (item_opt->arg) {
- g_string_append_printf(res_str, "=%s",
- item_opt->arg);
+ if (arg) {
+ g_string_append_printf(res_str, "=%s", arg);
}
- } else if (item_opt->descr->short_name) {
+ } else if (descr->short_name) {
g_string_append_printf(res_str, "-%c",
- item_opt->descr->short_name);
+ descr->short_name);
- if (item_opt->arg) {
- g_string_append_printf(res_str, " %s",
- item_opt->arg);
+ if (arg) {
+ g_string_append_printf(res_str, " %s", arg);
}
}
}
case ARGPAR_ITEM_TYPE_NON_OPT:
{
- const struct argpar_item_non_opt * const item_non_opt =
- (const void *) item;
+ const char * const arg = argpar_item_non_opt_arg(item);
+ const unsigned int orig_index =
+ argpar_item_non_opt_orig_index(item);
+ const unsigned int non_opt_index =
+ argpar_item_non_opt_non_opt_index(item);
- g_string_append_printf(res_str, "%s<%u,%u>",
- item_non_opt->arg, item_non_opt->orig_index,
- item_non_opt->non_opt_index);
+ g_string_append_printf(res_str, "%s<%u,%u>", arg, orig_index,
+ non_opt_index);
break;
}
default:
/*
* Parses `cmdline` with the iterator API using the option descriptors
- * `descrs`, and ensures that argpar_iter_parse_next() fails and that it
- * sets an error which is equal to `expected_error`.
+ * `descrs`, and ensures that argpar_iter_parse_next() fails with status
+ * `expected_status` and that it sets an error which is equal to
+ * `expected_error`.
*
* This function splits `cmdline` on spaces to create an original
* argument array.
static
void test_fail_argpar_iter(const char * const cmdline,
const char * const expected_error,
+ const enum argpar_iter_parse_next_status expected_status,
const struct argpar_opt_descr * const descrs)
{
struct argpar_iter *iter = NULL;
ARGPAR_ITEM_DESTROY_AND_RESET(item);
status = argpar_iter_parse_next(iter, &item, &error);
-
ok(status == ARGPAR_ITER_PARSE_NEXT_STATUS_OK ||
- status == ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR ||
- status == ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_UNKNOWN_OPT,
+ status == expected_status,
"argpar_iter_parse_next() returns the expected status "
"(%d) for command line `%s` (call %u)",
status, cmdline, i + 1);
*/
static
void test_fail(const char * const cmdline, const char * const expected_error,
+ const enum argpar_iter_parse_next_status expected_iter_next_status,
const struct argpar_opt_descr * const descrs)
{
test_fail_argpar_parse(cmdline, expected_error, descrs);
- test_fail_argpar_iter(cmdline, expected_error, descrs);
+ test_fail_argpar_iter(cmdline, expected_error,
+ expected_iter_next_status, descrs);
}
static
test_fail(
"--thumb=party --meow",
"While parsing argument #2 (`--meow`): Unknown option `--meow`",
+ ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_UNKNOWN_OPT,
descrs);
}
test_fail(
"--thumb=party -x",
"While parsing argument #2 (`-x`): Unknown option `-x`",
+ ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_UNKNOWN_OPT,
descrs);
}
test_fail(
"--thumb",
"While parsing argument #1 (`--thumb`): Missing required argument for option `--thumb`",
+ ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_MISSING_OPT_ARG,
descrs);
}
test_fail(
"-k",
"While parsing argument #1 (`-k`): Missing required argument for option `-k`",
+ ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_MISSING_OPT_ARG,
descrs);
}
test_fail(
"-abc",
"While parsing argument #1 (`-abc`): Missing required argument for option `-c`",
+ ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_MISSING_OPT_ARG,
descrs);
}
test_fail(
"-ab - -c",
"While parsing argument #2 (`-`): Invalid argument",
+ ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_INVALID_ARG,
descrs);
}
test_fail(
"-ab -- -c",
"While parsing argument #2 (`--`): Invalid argument",
+ ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_INVALID_ARG,
descrs);
}
test_fail(
"--chevre=fromage",
"While parsing argument #1 (`--chevre=fromage`): Unexpected argument for option `--chevre`",
+ ARGPAR_ITER_PARSE_NEXT_STATUS_ERROR_UNEXPECTED_OPT_ARG,
descrs);
}
}