changeset 594:4babcf9abc1a

farray.sh: farray_del() now accepts general index value
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 18 Sep 2024 16:13:51 +0200
parents f29f53749a1c
children 24f4dccaea45
files share/local-bsdtools/farray.sh tests/farray-array.t
diffstat 2 files changed, 60 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/share/local-bsdtools/farray.sh	Wed Sep 18 15:57:31 2024 +0200
+++ b/share/local-bsdtools/farray.sh	Wed Sep 18 16:13:51 2024 +0200
@@ -617,11 +617,7 @@
     local __farr_token __farr_gvrname __farr_len __farr_idx
 
     _farr_array_get_meta "$@"
-    __farr_index="${2-}"
-    [ -z "${__farr_index}" ] && _farr_fatal "no valid index given"
-    # make it to a number
-    __farr_index=$((__farr_index + 0))
-
+    _farr_make_index __farr_index "${2-}" "${__farr_len}"
     # check index range
     if [ \( "${__farr_index}" -lt 1 \) -o \( "${__farr_index}" -gt ${__farr_len} \) ]; then
 	_farr_fatal "array index out of bounds"
--- a/tests/farray-array.t	Wed Sep 18 15:57:31 2024 +0200
+++ b/tests/farray-array.t	Wed Sep 18 16:13:51 2024 +0200
@@ -177,6 +177,65 @@
   $ check_no_array_artifacts
 
 
+Deleting
+========
+
+  $ farray_create TEST 0 1 2 '3  4   5' $'" 678" \\\'910 ' 11
+  $ farray_del TEST 1
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 5
+  DEBUG:   its contents:
+  DEBUG:     1: `1'
+  DEBUG:     2: `2'
+  DEBUG:     3: `3  4   5'
+  DEBUG:     4: `" 678" \'910 '
+  DEBUG:     5: `11'
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+  $ farray_create TEST 0 1 2 '3  4   5' $'" 678" \\\'910 ' 11
+  $ farray_del TEST 0
+  $ 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" \'910 '
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+  $ farray_create TEST 0 1 2 '3  4   5' $'" 678" \\\'910 ' 11
+  $ farray_del TEST 4
+  $ farray_debug TEST
+  DEBUG: array `TEST' has length 5
+  DEBUG:   its contents:
+  DEBUG:     1: `0'
+  DEBUG:     2: `1'
+  DEBUG:     3: `2'
+  DEBUG:     4: `" 678" \'910 '
+  DEBUG:     5: `11'
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+  $ farray_create TEST 0 1 2 '3  4   5' $'" 678" \\\'910 ' 11
+  $ ( farray_del TEST "" )
+  ERROR: array index out of bounds
+  [70]
+
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+  $ farray_create TEST 0 1 2 '3  4   5' $'" 678" \\\'910 ' 11
+  $ ( farray_del TEST 7 )
+  ERROR: array index out of bounds
+  [70]
+
+  $ farray_destroy TEST
+  $ check_no_array_artifacts
+
+
 Splicing
 ========