summaryrefslogtreecommitdiff
path: root/t/args.t
diff options
context:
space:
mode:
authorGianni Ceccarelli <gianni.ceccarelli@broadbean.com>2023-07-26 11:50:37 +0100
committerGianni Ceccarelli <gianni.ceccarelli@broadbean.com>2023-07-26 11:50:37 +0100
commit0da5f0a49593bf9a24f15a8c4ff7a36ff4d04c69 (patch)
tree3e33e52d82875383749fcb6f37985da3c3505345 /t/args.t
parentremove old implementation (diff)
downloadbash-object-system-0da5f0a49593bf9a24f15a8c4ff7a36ff4d04c69.tar.gz
bash-object-system-0da5f0a49593bf9a24f15a8c4ff7a36ff4d04c69.tar.bz2
bash-object-system-0da5f0a49593bf9a24f15a8c4ff7a36ff4d04c69.zip
very rough parameter parser
Diffstat (limited to 't/args.t')
-rw-r--r--t/args.t35
1 files changed, 35 insertions, 0 deletions
diff --git a/t/args.t b/t/args.t
new file mode 100644
index 0000000..686adc6
--- /dev/null
+++ b/t/args.t
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+. t/testlib.sh
+
+declare first_parser
+
+set +x
+
+bos-args/build-parser-code-into first_parser \
+ -scalar one scalar_var \
+ -array two array_var \
+ -assoc three assoc_var \
+ -assignment-scalar '${name}="${value}"' \
+ -assignment-array '${name}+=( "${value}" )' \
+ -assignment-assoc '${name}+=( ["${key}"]="${value}" )'
+
+should-succeed "should build parser"
+
+diag "$first_parser"
+
+declare -a array_var
+declare -A assoc_var
+
+eval "function first-parser() { $first_parser }"
+first-parser -two a -three x y -two b -one foo -three w z -unused
+
+is "$scalar_var" 'foo' 'scalar should be set'
+
+is "${array_var[0]}" 'a' 'array should get first value'
+is "${array_var[1]}" 'b' 'array should get second value'
+
+is "${assoc_var[x]}" 'y' 'assoc should get first value'
+is "${assoc_var[w]}" 'z' 'assoc should get second value'
+
+done-testing