Added unit tests for cmddlineopts.clp
[grml-debootstrap.git] / tests / test_cmdlineopts.sh
diff --git a/tests/test_cmdlineopts.sh b/tests/test_cmdlineopts.sh
new file mode 100755 (executable)
index 0000000..940b048
--- /dev/null
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+
+test_cmdlineopts() {
+    . ../cmdlineopts.clp
+    CMDLINE=
+    typeset -a VALUES
+    count=0
+    i=0
+
+    OLDIFS="$IFS"
+    IFS=,
+    for CMD in $CMDLINE_OPTS ; do
+        PARAM=""
+        if [[ $CMD == *: ]] ; then
+            PARAM=$RANDOM
+        fi
+        VALUES[$count]="${CMD%%:*} $PARAM"
+        ((count++))
+    done
+    IFS=$OLDIFS
+
+    while [ "$i" -lt "$count" ] ; do
+        CMDLINE+="--${VALUES[$i]} "
+        ((i++))
+    done
+
+    . ../cmdlineopts.clp $CMDLINE
+
+
+    i=0
+    while [ "$i" -lt "$count" ] ; do
+        ENTRY="${VALUES[$i]}"
+        VARNAME=${ENTRY% *}
+        RESULT=${ENTRY/* /}
+        VARNAME='$_opt_'${VARNAME/-/_}
+        VALUE="$(eval echo $VARNAME)"
+        if [ -z "$RESULT" ] ; then
+            assertNotNull "$VARNAME should be not null" "$VALUE"
+        else
+            assertEquals "$VARNAME" "$RESULT" "$VALUE"
+        fi
+        ((i++))
+    done
+}
+
+SHUNIT_PARENT=$0
+. /usr/share/shunit2/shunit2