aboutsummaryrefslogtreecommitdiffstats
path: root/src/test.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2013-06-30 11:53:37 +0200
committerMattias Andrée <maandree@operamail.com>2013-06-30 11:53:37 +0200
commite8ea49cae5e294f70a0db72054f46e718cd75789 (patch)
tree06071fc802751d8f9fea1c49fc3a966eb653f886 /src/test.c
parentupdate makefile (diff)
downloadargparser-e8ea49cae5e294f70a0db72054f46e718cd75789.tar.gz
argparser-e8ea49cae5e294f70a0db72054f46e718cd75789.tar.bz2
argparser-e8ea49cae5e294f70a0db72054f46e718cd75789.tar.xz
add c test
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r--src/test.c98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/test.c b/src/test.c
new file mode 100644
index 0000000..9f85185
--- /dev/null
+++ b/src/test.c
@@ -0,0 +1,98 @@
+/**
+ * argparser – command line argument parser library
+ *
+ * Copyright © 2013 Mattias Andrée (maandree@member.fsf.org)
+ *
+ * This library is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include "argparser.h"
+
+
+int main(int argc, char** argv)
+{
+ char* pname = args_parent_name(1);
+ printf("Parent: %s\n", pname);
+ free(pname);
+
+ args_init("A test for argparser", "test [options] [files]",
+ "Copyright © 2013 Mattias Andrée (maandree@member.fsf.org)\n"
+ "\n"
+ "This library is free software: you can redistribute it and/or modify\n"
+ "it under the terms of the GNU General Public License as published by\n"
+ "the Free Software Foundation, either version 3 of the License, or\n"
+ "(at your option) any later version.\n"
+ "\n"
+ "This library is distributed in the hope that it will be useful,\n"
+ "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+ "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
+ "GNU General Public License for more details.\n"
+ "\n"
+ "You should have received a copy of the GNU General Public License\n"
+ "along with this library. If not, see <http://www.gnu.org/licenses/>.", 0, 1);
+
+ args_add_option(args_new_argumentless(0, "-h", "-?", "--help"), "Prints this help message\n(and exits)");
+ args_add_option(args_new_argumentless(0, "--hello"), "Prints the text: hello world'");
+ args_add_option(args_new_argumentless(0, "++hidden"), 0);
+
+ args_add_option(args_new_argumented("LINE", 0, "-l", "--line"), "Prints the choosen line");
+ args_add_option(args_new_variadic("LINE", 0, "--l", "--lines"), "Prints the choosen lines");
+
+ args_parse(argc, argv);
+ args_support_alternatives();
+
+ if (args_opts_used("-?"))
+ args_help();
+ else if (!args_unrecognised_count && args_arguments_count && !args_files_count)
+ {
+ char** arr;
+ long i = 0, n;
+ i = 0;
+ if (args_opts_used("--hello"))
+ for (n = args_opts_get_count("--hello"); i < n; i++)
+ printf("Hello World\n");
+ if (args_opts_used("-l"))
+ {
+ i = 0;
+ arr = args_opts_get("--line");
+ for (n = args_opts_get_count("--line"); i < n; i++)
+ printf("%s\n", *(arr + i));
+ }
+ if (args_opts_used("--lines"))
+ {
+ i = 0;
+ arr = args_opts_get("--l");
+ for (n = args_opts_get_count("--l"); i < n; i++)
+ printf("%s\n", *(arr + i));
+ if (n == 0)
+ printf("--l(--lines) is used without and arguments\n");
+ }
+ if (args_opts_used("++hidden"))
+ printf("Congratulations, you have found the secret option!\n");
+ }
+ else
+ {
+ long i;
+ printf("Number of unrecognised options: %li\n", args_unrecognised_count);
+ printf("Entered message: %s\n", args_message ? args_message : "null");
+ printf("Entered files:\n");
+ for (i = 0; i < args_files_count; i++)
+ printf("\t%s\n", *(args_files + i));
+ }
+
+ args_dispose();
+ return 0;
+}
+