annotate tests/testsetup.sh @ 782:11f3101c1980

farray.sh: Implemented plain Insertionsort. Using the optimized algorithm already used in Shell sort, just without manx gaps and using only the fixed last step 1.
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 26 Oct 2024 18:35:37 +0200
parents bae0652d0577
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
583
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
1 #!/bin/sh
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
2 #
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
3 # Test helpers for the shell unittests using cram.
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
4 #
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
5
758
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
6
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
7 #:
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
8 #: Set some directories to temporary values for inclusion of test configuration
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
9 #: files.
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
10 #:
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
11 CONFIGDIR="${TESTDIR}/etc"
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
12 PACKAGE_MAPPING="${CONFIGDIR}/package-mapping.conf"
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
13
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
14
583
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
15 #:
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
16 #: Check that no global variables that hold any array storage are left.
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
17 #:
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
18 #: Returns:
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
19 #: int: 0 if no unexpected storage is left, 1 otherwise
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
20 #:
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
21 check_no_array_artifacts() {
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
22 # _farr_A_ is the storage prefix for arrays
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
23 if set | grep -E -e '^_farr_A_.*='; then
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
24 return 1
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
25 else
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
26 return 0
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
27 fi
55c024c809ca Begin unittests for farray.sh using "cram"
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
28 }
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
29
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
30
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
31 #:
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
32 #: Check that no global variables that hold any alist storage are left.
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
33 #:
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
34 #: Returns:
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
35 #: int: 0 if no unexpected storage is left, 1 otherwise
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
36 #:
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
37 check_no_alist_artifacts() {
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
38 # This are all _farr_alist_XXX_prefix variables
756
33df05108ba1 farray.sh: New implementation alists: searching is done using a binary search now while preserving insertion order.
Franz Glasner <fzglas.hg@dom66.de>
parents: 604
diff changeset
39 if set | grep -E -e '^_farr_KV_.*=' -e '^_farr_Kb_.*=' -e '^_farr_Ks_.*=' -e '^_farr_Vs_.*='; then
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
40 return 1
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
41 else
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
42 return 0
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
43 fi
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents: 583
diff changeset
44 }
758
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
45
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
46
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
47 #:
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
48 #: Check that no local variables are globally visible.
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
49 #:
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
50 #: Because all local variables have the ``__farr_`` prefix it can easily
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
51 #: checked that no forgotten "local" declarations exist.
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
52 #:
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
53 check_no_local_artifacts() {
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
54 if set | grep -E -e '^__farr.*='; then
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
55 return 1
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
56 else
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
57 return 0
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
58 fi
7ead30e3b2f9 farray.sh: Check for typos in local variable names or missing "local" declarations for variables
Franz Glasner <fzglas.hg@dom66.de>
parents: 756
diff changeset
59 }
773
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
60
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
61
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
62 #:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
63 #: Create an new array with random entries.
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
64 #:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
65 #: Args:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
66 #: $1 (str): The variable name of the array where to store the
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
67 #: $2 (int): The number of array entries
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
68 #:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
69 #: Input (Globals):
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
70 #:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
71 create_random_array() {
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
72 # $1 $2
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
73
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
74 local _arr _n
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
75
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
76 farray_create _arr
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
77 for _n in $(/usr/bin/jot -r "${2}" 100000000 999999999); do
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
78 farray_append _arr "${_n}"
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
79 done
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
80 setvar "${1}" "${_arr}"
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
81 }
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
82
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
83
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
84 #:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
85 #: Check that an array is sorted
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
86 #:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
87 #: Args:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
88 #: $1 (str): The array
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
89 #:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
90 #: Returns:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
91 #: int: 0 (truthy) if the array `$1` is sorted, 1 otherwise
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
92 #:
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
93 check_array_is_sorted() {
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
94 # $1
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
95
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
96 local i len prev_item cur_item
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
97
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
98 farray_length len "$1"
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
99
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
100 [ "${len}" -le 1 ] && return 0
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
101 farray_get prev_item "$1" 1
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
102 i=2
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
103 while [ "${i}" -le "${len}" ]; do
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
104 farray_get cur_item "$1" "${i}"
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
105 [ "${prev_item}" '>' "${cur_item}" ] && return 1
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
106 prev_item="${cur_item}"
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
107 i=$((i + 1))
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
108 done
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
109 return 0
bae0652d0577 farray.sh: More tests for sorting: using a random array
Franz Glasner <fzglas.hg@dom66.de>
parents: 758
diff changeset
110 }