changeset 583:55c024c809ca

Begin unittests for farray.sh using "cram"
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 18 Sep 2024 00:46:17 +0200
parents 22d35878f6f8
children 7bf729bec285
files tests/farray-array.t tests/testsetup.sh
diffstat 2 files changed, 91 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/farray-array.t	Wed Sep 18 00:46:17 2024 +0200
@@ -0,0 +1,72 @@
+Basic tests of farray.sh's farray_XXX functions
+
+Shell is /bin/sh.
+
+Setup
+=====
+
+  $ . "${TESTDIR}/testsetup.sh"
+  $ _p_datadir="${TESTDIR}/../share/local-bsdtools"
+  $ . "${_p_datadir}/farray.sh"
+
+Create an empty array
+
+  $ farray_create EMPTY
+  $ farray_print_length EMPTY
+  0 (no-eol)
+  $ farray_length _var EMPTY
+  $ test ${_var} -eq 0
+  $ farray_debug EMPTY
+  DEBUG: array `EMPTY' has length 0
+  $ farray_destroy EMPTY
+  $ check_no_array_artifacts
+
+Create and destroy an array
+
+  $ farray_create TEST 0 1 2 '3  4   5' $'" 678" \\\'90 '
+  $ farray_print_length TEST
+  5 (no-eol)
+  $ farray_length _var TEST
+  $ test ${_var} -eq 5
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 5
+  DEBUG:   its contents:
+  DEBUG:     1: `0'
+  DEBUG:     2: `1'
+  DEBUG:     3: `2'
+  DEBUG:     4: `3  4   5'
+  DEBUG:     5: `" 678" \'90 '
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Create, clear and destroy an array
+
+  $ farray_create TEST 0 1 2 '3  4   5' $'" 678" \\\'90 '
+  $ farray_print_length TEST
+  5 (no-eol)
+  $ farray_length _var TEST
+  $ test ${_var} -eq 5
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 5
+  DEBUG:   its contents:
+  DEBUG:     1: `0'
+  DEBUG:     2: `1'
+  DEBUG:     3: `2'
+  DEBUG:     4: `3  4   5'
+  DEBUG:     5: `" 678" \'90 '
+  $ farray_clear TEST
+  $ farray_print_length TEST
+  0 (no-eol)
+  $ farray_length _var TEST
+  $ test ${_var} -eq 0
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+Duplicate destruction
+
+  $ farray_create TEST 1 2 3
+  $ farray_destroy TEST
+  $ farray_destroy TEST
+  ERROR: farray `TEST' does not exist: token empty
+  [1]
+  $ check_no_array_artifacts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/testsetup.sh	Wed Sep 18 00:46:17 2024 +0200
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# Test helpers for the shell unittests using cram.
+#
+
+#:
+#: Check that no global variables that hold any array storage are left.
+#:
+#: Returns:
+#:   int: 0 if no unexpected storage is left, 1 otherwise
+#:
+check_no_array_artifacts() {
+    # _farr_A_ is the storage prefix for arrays
+    if set | grep -E -e '^_farr_A_.*='; then
+	return 1
+    else
+	return 0
+    fi
+}