Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
changeset 604:45c47bc1f7d2
farray.sh: Moved all currently existing tests for alists into cram tests.
Removed existing tests from farray.sh -- and put them into farray-alist.t.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 18 Sep 2024 23:08:06 +0200 |
| parents | d4e8474ecc8b |
| children | 96366e2075fe |
| files | share/local-bsdtools/farray.sh tests/farray-alist.t tests/testsetup.sh |
| diffstat | 3 files changed, 205 insertions(+), 109 deletions(-) [+] |
line wrap: on
line diff
--- a/share/local-bsdtools/farray.sh Wed Sep 18 22:06:45 2024 +0200 +++ b/share/local-bsdtools/farray.sh Wed Sep 18 23:08:06 2024 +0200 @@ -925,7 +925,7 @@ [ -z "${__farr_end}" ] && __farr_end="${__farr_len}" _farr_make_index __farr_end "${__farr_end}" "${__farr_len}" [ ${__farr_end} -lt 1 ] && _farr_fatal "end index must be >= 1" - [ ${__farr_end} -gt "${__farr_len}" ] && _farr_fatal "end index exceeds array length" + [ ${__farr_end} -gt "${__farr_len}" ] && _farr_fatal "end index exceeds array length" __farr_cur_idx=${__farr_start} while [ ${__farr_cur_idx} -le ${__farr_end} ]; do @@ -1935,111 +1935,3 @@ done return 0 } - - -#: -#: Some basic tests. -#: -_farray_test() { - local CMD - local _i _var _k _v - - set - - set -eu - - falist_create LIST - falist_length _i LIST - [ "$_i" -eq 0 ] || echo "alist length != 0 (ERROR)" - falist_print_length LIST && echo - falist_debug LIST - falist_destroy LIST - - falist_create LIST - falist_set LIST K1 V1 - falist_set LIST K2 V2 - falist_debug LIST - falist_set LIST K2 "V2 2" - falist_set LIST K3 $'" 111222333" \\\'444555 ' # ' - falist_debug LIST - if ! falist_contains LIST K1; then - echo "NOT CONTAINS (ERROR)" - fi - if falist_contains LIST K; then - echo "CONTAINS (ERROR)" - fi - falist_debug LIST - falist_get _var LIST K2 - [ "$_var" = "V2 2" ] || echo "alist element not found (ERROR)" - if ! falist_tryget _var LIST K1; then - echo "NOT FOUND (ERROR)" - fi - if falist_tryget _i LIST K; then - echo "FOUND (ERROR)" - fi - falist_length _i LIST - echo "LENGTH: $_i" - printf "%s" "PRINT LENGTH: " - falist_print_length LIST - echo - _var="$(falist_print_length NON_EXISTING_LIST)" - if [ "${_var}" != "-1" ]; then - echo "VALID LENGTH (ERROR)" - fi - - # Iteration by indexing key and values separately - echo "ITERATE (manual indexing):" - _i=1 - while falist_tryget_key_at_index _k LIST ${_i}; do - # cannot fail under "normal" circumstances - falist_tryget_value_at_index _v LIST ${_i} - printf " KEY: \`%s', VAL: \`%s'\\n" "${_k}" "${_v}" - _i=$((${_i} + 1)) - done - - # Iteration by indexing key and values separately - echo "ITERATE (manual indexing over items):" - _i=1 - while falist_tryget_item_at_index _k _v LIST ${_i}; do - printf " KEY: \`%s', VAL: \`%s'\\n" "${_k}" "${_v}" - _i=$((${_i} + 1)) - done - - # Iteration with for each - echo "ITERATE (for each):" - falist_for_each LIST $'printf "EACH: %s key \\`%s\\\', value \\`%s\\\' at idx %d\\n"' # ` - - falist_clear LIST - if ! falist_destroy LIST ; then - echo "DESTROY FAILED (ERROR)" - fi - if falist_destroy LIST ; then - echo "DESTROY SUCCEEDED (ERROR)" - else - echo "(this is ok)" - fi - - # Deletion of keys - falist_create LIST - falist_set LIST 'key 1' 'value 1' - falist_set LIST 'key 2' 'value 2' - falist_set LIST 'key 3' 'value 3' - falist_set LIST 'key 4' 'value 4' - falist_set LIST 'key 5' 'value 5' - falist_trydel LIST 'key 1' || echo "cannot del key 1" - falist_trydel LIST 'key 5' || echo "cannot del key 5" - falist_trydel LIST 'key 3' || echo "cannot del key 3" - [ "$(falist_print_length LIST)" -eq 2 ] || echo "length mismatch" - falist_get _var LIST 'key 2' - [ "$_var" = 'value 2' ] || echo "value mismatch" - falist_get _var LIST 'key 4' - [ "$_var" = 'value 4' ] || echo "value mismatch" - falist_destroy LIST - - # set - echo "============================================================" - echo "OK." - echo "============================================================" -} - - -# _farray_test
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/farray-alist.t Wed Sep 18 23:08:06 2024 +0200 @@ -0,0 +1,188 @@ +Basic tests of farray.sh's falist_XXX functions + +Shell is /bin/sh. + + +Setup +===== + + $ set -u + $ . "${TESTDIR}/testsetup.sh" + $ _p_datadir="${TESTDIR}/../share/local-bsdtools" + $ . "${_p_datadir}/farray.sh" + + +Basic Creation and Destruction +============================== + +Create an empty alist + + $ falist_create LIST + $ falist_length _i LIST + $ echo "$_i" + 0 + $ test "${_i}" -eq 0 + $ falist_print_length LIST + 0 (no-eol) + + $ falist_debug LIST + DEBUG: alist `LIST' has length 0 + + $ falist_destroy LIST + $ ( falist_destroy LIST ) + ERROR: falist `LIST' not created properly: token empty + [1] + + $ check_no_alist_artifacts + + +Clear +===== + + $ falist_create LIST + $ falist_set LIST K1 V1 + $ falist_set LIST K2 V2 + $ falist_debug LIST + DEBUG: alist `LIST' has length 2 + DEBUG: `K1' -> `V1' + DEBUG: `K2' -> `V2' + $ falist_length _i LIST + $ echo "$_i" + 2 + $ falist_print_length LIST + 2 (no-eol) + + $ falist_clear LIST + $ falist_length _i LIST + $ echo "$_i" + 0 + $ falist_print_length LIST + 0 (no-eol) + + $ falist_destroy LIST + $ check_no_alist_artifacts + + +Get / Set / Contains +==================== + + $ falist_create LIST + $ falist_set LIST K1 V1 + $ falist_set LIST K2 V2 + $ falist_debug LIST + DEBUG: alist `LIST' has length 2 + DEBUG: `K1' -> `V1' + DEBUG: `K2' -> `V2' + $ falist_length _i LIST + $ echo "$_i" + 2 + $ falist_print_length LIST + 2 (no-eol) + + $ falist_set LIST K2 "V2 2" + $ falist_set LIST K3 $'" 111222333" \\\'444555 ' # ' + $ falist_debug LIST + DEBUG: alist `LIST' has length 3 + DEBUG: `K1' -> `V1' + DEBUG: `K2' -> `V2 2' + DEBUG: `K3' -> `" 111222333" \'444555 ' + $ falist_length _i LIST + $ echo "$_i" + 3 + $ falist_print_length LIST + 3 (no-eol) + + $ falist_contains LIST K1 + $ falist_contains LIST K + [1] + $ falist_get _var LIST K2 + $ echo "$_var" + V2 2 + $ falist_tryget _var LIST K1 + $ echo "$_var" + V1 + $ falist_tryget _i LIST K + [1] + $ _var="$(falist_print_length NON_EXISTING_LIST)" + ERROR: falist `NON_EXISTING_LIST' not created properly: token empty + $ echo "${_var}" + -1 + + $ falist_destroy LIST + $ check_no_alist_artifacts + + +Iteration +========= + +ITERATE (manual indexing) + + $ falist_create LIST + $ falist_set LIST K1 V1 + $ falist_set LIST K2 "V2 2" + $ falist_set LIST K3 $'" 111222333" \\\'444555 ' # ' + +Iteration by indexing key and values separately + + $ _i=1 + > while falist_tryget_key_at_index _k LIST ${_i}; do + > # cannot fail under "normal" circumstances + > falist_tryget_value_at_index _v LIST ${_i} + > printf " KEY: \`%s', VAL: \`%s'\\n" "${_k}" "${_v}" + > _i=$((_i + 1)) + > done + KEY: `K1', VAL: `V1' + KEY: `K2', VAL: `V2 2' + KEY: `K3', VAL: `" 111222333" \'444555 ' + +ITERATE (manual indexing over items) + + $ _i=1 + > while falist_tryget_item_at_index _k _v LIST ${_i}; do + > printf " KEY: \`%s', VAL: \`%s'\\n" "${_k}" "${_v}" + > _i=$((_i + 1)) + > done + KEY: `K1', VAL: `V1' + KEY: `K2', VAL: `V2 2' + KEY: `K3', VAL: `" 111222333" \'444555 ' + +ITERATE (for each) + + $ falist_for_each LIST $'printf "EACH: %s key \\`%s\\\', value \\`%s\\\' at idx %d\\n"' # ` + EACH: LIST key `K1', value `V1' at idx 1 + EACH: LIST key `K2', value `V2 2' at idx 2 + EACH: LIST key `K3', value `" 111222333" \'444555 ' at idx 3 + + $ falist_clear LIST + $ falist_destroy LIST + $ falist_destroy LIST + ERROR: falist `LIST' not created properly: token empty + [1] + + +Deletion of keys +================ + + $ falist_create LIST + $ falist_set LIST 'key 1' 'value 1' + $ falist_set LIST 'key 2' 'value 2' + $ falist_set LIST 'key 3' 'value 3' + $ falist_set LIST 'key 4' 'value 4' + $ falist_set LIST 'key 5' 'value 5' + $ falist_trydel LIST 'key 1' + $ falist_trydel LIST 'key 5' + $ falist_trydel LIST 'key 3' + $ falist_trydel LIST "non-existing key" + [1] + $ falist_print_length LIST + 2 (no-eol) + $ falist_get _var LIST 'key 2' + $ printf '%s' "$_var" + value 2 (no-eol) + $ falist_get _var LIST 'key 4' + $ printf '%s' "$_var" + value 4 (no-eol) + + $ falist_destroy LIST + + $ check_no_alist_artifacts
--- a/tests/testsetup.sh Wed Sep 18 22:06:45 2024 +0200 +++ b/tests/testsetup.sh Wed Sep 18 23:08:06 2024 +0200 @@ -17,3 +17,19 @@ return 0 fi } + + +#: +#: Check that no global variables that hold any alist storage are left. +#: +#: Returns: +#: int: 0 if no unexpected storage is left, 1 otherwise +#: +check_no_alist_artifacts() { + # This are all _farr_alist_XXX_prefix variables + if set | grep -E -e '^_farr_KV_.*=' -e '^_farr_K_.*=' -e '^_farr_V_.*='; then + return 1 + else + return 0 + fi +}
