aboutsummaryrefslogtreecommitdiffstats
path: root/test-arg.c
diff options
context:
space:
mode:
Diffstat (limited to 'test-arg.c')
-rw-r--r--test-arg.c89
1 files changed, 89 insertions, 0 deletions
diff --git a/test-arg.c b/test-arg.c
new file mode 100644
index 0000000..d4dd957
--- /dev/null
+++ b/test-arg.c
@@ -0,0 +1,89 @@
+/* vim: set sw=4 ts=4 sts=4 et: */
+#undef NDEBUG
+#define _POSIX_C_SOURCE 200809L
+#include <l4arg.h>
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+void test_arg_parse (void) {
+ LbsStrv* strv;
+ LbsArray* detail;
+
+ strv = lbs_arg_parse (
+ ",''/test-arg yes,, \"AB\\^^\\CDE\" \'^^\\\\\' YY\\ ZZ $(F GH\"I\"^)),",
+ " ,", "^\\", (LbsArgQuote[]) {
+ { "\"", "\"", false },
+ { "\'", "\'", true },
+ { "$(", ")", false },
+ { NULL, NULL, false }
+ }, &detail);
+
+ assert (lbs_strv_get_len (strv) == lbs_array_get_len (detail));
+ assert (lbs_strv_get_len (strv) == 6);
+
+ char** strv_copy = lbs_strv_copy_strv (strv);
+ char* strv_ans[] = {
+ "/test-arg", "yes", "AB^\\CDE", "^^\\\\", "YY ZZ", "F GH\"I\")", NULL};
+ for (int i = 0; strv_ans[i] != NULL; i++) {
+ assert (strcmp (strv_copy[i], strv_ans[i]) == 0);
+ }
+
+ int detail_ans[] = { 1, -1, 0, 1, -1, 2 };
+ for (size_t i = 0; i < lbs_array_get_len (detail); i++) {
+ assert (lbs_array_v (detail, int, i) == detail_ans[i]);
+ }
+
+ lbs_strv_generic_free (strv_copy);
+ lbs_strv_unref (strv);
+ lbs_array_unref (detail);
+
+ printf ("%s => PASS!\n", __func__);
+}
+
+void test_qarg_parse (void) {
+ LbsArgQopt* qopt = lbs_arg_qopt_new (
+ "if=virt,file=/Yes/Good\\ Night/Great,\"name=\\Y\",good");
+
+ assert (lbs_arg_qopt_get_len (qopt) == 4);
+ assert (lbs_arg_qopt_get_len (qopt) == lbs_strv_get_len (qopt->strv));
+ assert (lbs_arg_qopt_get_len (qopt) == lbs_array_get_len (qopt->detail));
+
+ assert (strcmp (lbs_arg_qopt_get_name (qopt, 0), "if") == 0);
+ assert (strcmp (lbs_arg_qopt_get_value (qopt, 0), "virt") == 0);
+ assert (lbs_arg_qopt_has_name (qopt, 0));
+ assert (lbs_arg_qopt_has_value (qopt, 0));
+ assert (!lbs_arg_qopt_is_empty (qopt, 0));
+
+ assert (strcmp (lbs_arg_qopt_get_name (qopt, 1), "file") == 0);
+ assert (strcmp (lbs_arg_qopt_get_value (qopt, 1), "/Yes/Good Night/Great") == 0);
+ assert (lbs_arg_qopt_has_name (qopt, 1));
+ assert (lbs_arg_qopt_has_value (qopt, 1));
+ assert (!lbs_arg_qopt_is_empty (qopt, 1));
+
+ assert (strcmp (lbs_arg_qopt_get_name (qopt, 2), "name") == 0);
+ assert (strcmp (lbs_arg_qopt_get_value (qopt, 2), "Y") == 0);
+ assert (lbs_arg_qopt_has_name (qopt, 2));
+ assert (lbs_arg_qopt_has_value (qopt, 2));
+ assert (!lbs_arg_qopt_is_empty (qopt, 2));
+
+ assert (strcmp (lbs_arg_qopt_get_name (qopt, 3), "good") == 0);
+ assert (lbs_arg_qopt_get_value (qopt, 3) == NULL);
+ assert (lbs_arg_qopt_has_name (qopt, 3));
+ assert (!lbs_arg_qopt_has_value (qopt, 3));
+ assert (!lbs_arg_qopt_is_empty (qopt, 3));
+
+ assert (lbs_arg_qopt_is_empty (qopt, 4));
+
+ lbs_arg_qopt_free (qopt);
+
+ printf ("%s => PASS!\n", __func__);
+}
+
+int main () {
+ test_arg_parse ();
+ test_qarg_parse ();
+ return 0;
+}