test: move all module tests to the test/ directory
This commit is contained in:
175
test/cmd/example.c
Normal file
175
test/cmd/example.c
Normal file
@@ -0,0 +1,175 @@
|
||||
#include <blue/cmd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
enum {
|
||||
CMD_TEST,
|
||||
CMD_SUB,
|
||||
OPT_NAME,
|
||||
OPT_NAME_VALUE,
|
||||
OPT_OTHER,
|
||||
OPT_OTHER_VALUE,
|
||||
OPT_VERBOSE,
|
||||
OPT_REALLY_VERBOSE,
|
||||
OPT_MODE,
|
||||
OPT_MODE_VALUE,
|
||||
OPT_MODE_VALUE2,
|
||||
ARG_FILE,
|
||||
ARG_MORE,
|
||||
};
|
||||
|
||||
const char *text
|
||||
= "No one rejects, dislikes, or avoids pleasure itself, because it is "
|
||||
"pleasure, but because those who do not know how to pursue pleasure "
|
||||
"rationally encounter consequences that are extremely painful. Nor "
|
||||
"again is there anyone who loves or pursues or desires to obtain "
|
||||
"pain of itself, because it is pain, but because occasionally "
|
||||
"circumstances occur in which toil and pain can procure him some "
|
||||
"great pleasure.";
|
||||
|
||||
static int test_command(
|
||||
const b_command *self, const b_arglist *opt, const b_array *args)
|
||||
{
|
||||
printf("Hello, world!\n");
|
||||
|
||||
b_arglist_iterator it;
|
||||
b_arglist_iterator_begin(
|
||||
opt, B_COMMAND_INVALID_ID, B_COMMAND_INVALID_ID, &it);
|
||||
while (b_arglist_iterator_is_valid(&it)) {
|
||||
printf("opt:%u,arg:%u,i:%zu,value: %s\n", it.opt_id,
|
||||
it.value->val_id, it.i, it.value->val_str);
|
||||
|
||||
b_arglist_iterator_next(&it);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_TEST, B_COMMAND_INVALID_ID)
|
||||
{
|
||||
B_COMMAND_NAME("test");
|
||||
B_COMMAND_DESC("A test command.");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(test_command);
|
||||
|
||||
B_COMMAND_OPTION(OPT_NAME)
|
||||
{
|
||||
B_OPTION_LONG_NAME("name");
|
||||
B_OPTION_SHORT_NAME('n');
|
||||
B_OPTION_DESC("The name of the data.");
|
||||
B_OPTION_ARG(OPT_NAME_VALUE)
|
||||
{
|
||||
B_ARG_NAME("name");
|
||||
B_ARG_NR_VALUES(2);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_OPTION(OPT_OTHER)
|
||||
{
|
||||
B_OPTION_LONG_NAME("other");
|
||||
B_OPTION_DESC(text);
|
||||
|
||||
B_OPTION_ARG(OPT_OTHER_VALUE)
|
||||
{
|
||||
B_ARG_NAME("value");
|
||||
B_ARG_NR_VALUES(B_ARG_1_OR_MORE_VALUES);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_OPTION(OPT_VERBOSE)
|
||||
{
|
||||
B_OPTION_LONG_NAME("verbose");
|
||||
B_OPTION_SHORT_NAME('v');
|
||||
B_OPTION_DESC("Show detailed log output.");
|
||||
}
|
||||
|
||||
B_COMMAND_OPTION(OPT_REALLY_VERBOSE)
|
||||
{
|
||||
B_OPTION_LONG_NAME("really-verbose");
|
||||
B_OPTION_SHORT_NAME('V');
|
||||
B_OPTION_DESC("Show REALLY detailed log output.");
|
||||
}
|
||||
|
||||
B_COMMAND_OPTION(OPT_MODE)
|
||||
{
|
||||
B_OPTION_SHORT_NAME('m');
|
||||
B_OPTION_LONG_NAME("mode");
|
||||
B_OPTION_DESC("modes to operate in.");
|
||||
|
||||
B_OPTION_ARG(OPT_MODE_VALUE)
|
||||
{
|
||||
B_ARG_NAME("mode");
|
||||
B_ARG_NR_VALUES(1);
|
||||
B_ARG_ALLOWED_VALUES("fast", "slow");
|
||||
}
|
||||
|
||||
B_OPTION_ARG(OPT_MODE_VALUE2)
|
||||
{
|
||||
B_ARG_NAME("mode2");
|
||||
B_ARG_NR_VALUES(1);
|
||||
B_ARG_ALLOWED_VALUES("very-fast", "very-slow");
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_ARG(ARG_FILE)
|
||||
{
|
||||
B_ARG_NAME("file");
|
||||
B_ARG_DESC("The file(s) to use");
|
||||
B_ARG_NR_VALUES(2);
|
||||
}
|
||||
|
||||
B_COMMAND_ARG(ARG_MORE)
|
||||
{
|
||||
B_ARG_NAME("more");
|
||||
B_ARG_DESC("More args to use");
|
||||
B_ARG_ALLOWED_VALUES("how", "wow");
|
||||
B_ARG_NR_VALUES(2);
|
||||
}
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_OPT(OPT_NAME);
|
||||
B_COMMAND_USAGE_ARG(ARG_FILE);
|
||||
B_COMMAND_USAGE_ARG(ARG_MORE);
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND(CMD_SUB, CMD_TEST)
|
||||
{
|
||||
B_COMMAND_NAME("sub");
|
||||
B_COMMAND_LONG_NAME("sub");
|
||||
B_COMMAND_SHORT_NAME('S');
|
||||
B_COMMAND_DESC("A test subcommand");
|
||||
B_COMMAND_FLAGS(B_COMMAND_SHOW_HELP_BY_DEFAULT);
|
||||
B_COMMAND_FUNCTION(test_command);
|
||||
|
||||
B_COMMAND_OPTION(OPT_NAME)
|
||||
{
|
||||
B_OPTION_LONG_NAME("name");
|
||||
B_OPTION_SHORT_NAME('n');
|
||||
B_OPTION_DESC("The name of the data");
|
||||
B_OPTION_ARG(OPT_NAME_VALUE)
|
||||
{
|
||||
B_ARG_NAME("name");
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_OPTION(OPT_OTHER)
|
||||
{
|
||||
B_OPTION_LONG_NAME("other");
|
||||
B_OPTION_SHORT_NAME('o');
|
||||
B_OPTION_DESC("The other argument");
|
||||
B_OPTION_ARG(OPT_OTHER_VALUE)
|
||||
{
|
||||
B_ARG_NAME("value");
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_HELP_OPTION();
|
||||
}
|
||||
|
||||
int main(int argc, const char **argv)
|
||||
{
|
||||
return b_command_dispatch(CMD_TEST, argc, argv);
|
||||
}
|
||||
Reference in New Issue
Block a user