diff tests/testsetup.sh @ 773:bae0652d0577

farray.sh: More tests for sorting: using a random array
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 23 Oct 2024 18:33:38 +0200
parents 7ead30e3b2f9
children
line wrap: on
line diff
--- a/tests/testsetup.sh	Wed Oct 23 16:44:12 2024 +0200
+++ b/tests/testsetup.sh	Wed Oct 23 18:33:38 2024 +0200
@@ -57,3 +57,54 @@
 	return 0
     fi
 }
+
+
+#:
+#: Create an new array with random entries.
+#:
+#: Args:
+#:   $1 (str): The variable name of the array where to store the 
+#:   $2 (int): The number of array entries
+#:
+#: Input (Globals):
+#: 
+create_random_array() {
+    # $1 $2
+
+    local _arr _n
+
+    farray_create _arr
+    for _n in $(/usr/bin/jot -r "${2}"  100000000 999999999); do
+	farray_append _arr "${_n}"
+    done
+    setvar "${1}" "${_arr}"
+}
+
+
+#:
+#: Check that an array is sorted
+#:
+#: Args:
+#:   $1 (str): The array
+#:
+#: Returns:
+#:   int: 0 (truthy) if the array `$1` is sorted, 1 otherwise
+#:
+check_array_is_sorted() {
+    # $1
+
+    local i len prev_item cur_item
+
+    farray_length len "$1"
+
+    [ "${len}" -le 1 ] && return 0
+    farray_get prev_item "$1" 1
+    i=2
+    while [ "${i}" -le "${len}" ]; do
+	farray_get cur_item "$1" "${i}"
+	[ "${prev_item}" '>' "${cur_item}" ] && return 1
+	prev_item="${cur_item}"
+	i=$((i + 1))
+    done
+    return 0
+}