annotate tests/farray-alist.t @ 733:772e4999562b

farray.sh: Unified the output of farray_debug() and falist_debug()
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 07 Oct 2024 14:08:29 +0200
parents 8f1583faf9ea
children dae85cddc47b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
1 Basic tests of farray.sh's falist_XXX functions
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
2
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
3 Shell is /bin/sh.
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
4
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
5
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
6 Setup
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
7 =====
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
8
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
9 $ set -u
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
10 $ . "${TESTDIR}/testsetup.sh"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
11 $ _p_datadir="${TESTDIR}/../share/local-bsdtools"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
12 $ . "${_p_datadir}/farray.sh"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
13
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
14
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
15 Basic Creation and Destruction
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
16 ==============================
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
17
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
18 Create an empty alist
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
19
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
20 $ falist_create LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
21 $ falist_length _i LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
22 $ echo "$_i"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
23 0
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
24 $ test "${_i}" -eq 0
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
25 $ falist_print_length LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
26 0 (no-eol)
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
27
651
57ee25cec0dd farray.sh: farray_istrue() and falist_istrue(): truth tests for arrays and alists.
Franz Glasner <fzglas.hg@dom66.de>
parents: 615
diff changeset
28 $ falist_istrue LIST
57ee25cec0dd farray.sh: farray_istrue() and falist_istrue(): truth tests for arrays and alists.
Franz Glasner <fzglas.hg@dom66.de>
parents: 615
diff changeset
29 [1]
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
30 $ falist_debug LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
31 DEBUG: alist `LIST' has length 0
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
32
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
33 $ falist_release LIST
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
34 $ ( falist_release LIST )
716
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
35 ERROR: object `LIST' not created properly: token empty
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
36 [1]
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
37
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
38 $ check_no_alist_artifacts
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
39
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
40
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
41 Clear
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
42 =====
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
43
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
44 $ falist_create LIST
651
57ee25cec0dd farray.sh: farray_istrue() and falist_istrue(): truth tests for arrays and alists.
Franz Glasner <fzglas.hg@dom66.de>
parents: 615
diff changeset
45 $ falist_istrue LIST
57ee25cec0dd farray.sh: farray_istrue() and falist_istrue(): truth tests for arrays and alists.
Franz Glasner <fzglas.hg@dom66.de>
parents: 615
diff changeset
46 [1]
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
47 $ falist_set LIST K1 V1
651
57ee25cec0dd farray.sh: farray_istrue() and falist_istrue(): truth tests for arrays and alists.
Franz Glasner <fzglas.hg@dom66.de>
parents: 615
diff changeset
48 $ falist_istrue LIST
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
49 $ falist_set LIST K2 V2
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
50 $ falist_debug LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
51 DEBUG: alist `LIST' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
52 DEBUG: the items:
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
53 DEBUG: `K1' -> `V1'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
54 DEBUG: `K2' -> `V2'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
55 $ falist_length _i LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
56 $ echo "$_i"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
57 2
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
58 $ falist_print_length LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
59 2 (no-eol)
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
60
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
61 $ falist_clear LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
62 $ falist_length _i LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
63 $ echo "$_i"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
64 0
651
57ee25cec0dd farray.sh: farray_istrue() and falist_istrue(): truth tests for arrays and alists.
Franz Glasner <fzglas.hg@dom66.de>
parents: 615
diff changeset
65 $ falist_istrue LIST
57ee25cec0dd farray.sh: farray_istrue() and falist_istrue(): truth tests for arrays and alists.
Franz Glasner <fzglas.hg@dom66.de>
parents: 615
diff changeset
66 [1]
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
67 $ falist_print_length LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
68 0 (no-eol)
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
69
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
70 $ falist_release LIST
651
57ee25cec0dd farray.sh: farray_istrue() and falist_istrue(): truth tests for arrays and alists.
Franz Glasner <fzglas.hg@dom66.de>
parents: 615
diff changeset
71 $ falist_istrue LIST
716
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
72 ERROR: object `LIST' not created properly: token empty
651
57ee25cec0dd farray.sh: farray_istrue() and falist_istrue(): truth tests for arrays and alists.
Franz Glasner <fzglas.hg@dom66.de>
parents: 615
diff changeset
73 [1]
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
74 $ check_no_alist_artifacts
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
75
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
76
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
77 Get / Set / Contains
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
78 ====================
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
79
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
80 $ falist_create LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
81 $ falist_set LIST K1 V1
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
82 $ falist_set LIST K2 V2
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
83 $ falist_debug LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
84 DEBUG: alist `LIST' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
85 DEBUG: the items:
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
86 DEBUG: `K1' -> `V1'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
87 DEBUG: `K2' -> `V2'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
88 $ falist_length _i LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
89 $ echo "$_i"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
90 2
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
91 $ falist_print_length LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
92 2 (no-eol)
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
93
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
94 $ falist_set LIST K2 "V2 2"
718
2502e077d5e9 farray.sh: Implement "falist_set_unique()" that does not overwrite existing key-value pairs
Franz Glasner <fzglas.hg@dom66.de>
parents: 717
diff changeset
95 $ falist_set_unique LIST K2 "V2 duplicate"
2502e077d5e9 farray.sh: Implement "falist_set_unique()" that does not overwrite existing key-value pairs
Franz Glasner <fzglas.hg@dom66.de>
parents: 717
diff changeset
96 [1]
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
97 $ falist_set LIST K3 $'" 111222333" \\\'444555 ' # '
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
98 $ falist_debug LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
99 DEBUG: alist `LIST' has length 3
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
100 DEBUG: the items:
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
101 DEBUG: `K1' -> `V1'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
102 DEBUG: `K2' -> `V2 2'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
103 DEBUG: `K3' -> `" 111222333" \'444555 '
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
104 $ falist_length _i LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
105 $ echo "$_i"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
106 3
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
107 $ falist_print_length LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
108 3 (no-eol)
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
109
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
110 $ falist_contains LIST K1
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
111 $ falist_contains LIST K
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
112 [1]
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
113 $ falist_get _var LIST K2
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
114 $ echo "$_var"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
115 V2 2
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
116 $ falist_tryget _var LIST K1
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
117 $ echo "$_var"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
118 V1
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
119 $ falist_tryget _i LIST K
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
120 [1]
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
121 $ _var="$(falist_print_length NON_EXISTING_LIST)"
716
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
122 ERROR: object `NON_EXISTING_LIST' not created properly: token empty
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
123 $ echo "${_var}"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
124 -1
718
2502e077d5e9 farray.sh: Implement "falist_set_unique()" that does not overwrite existing key-value pairs
Franz Glasner <fzglas.hg@dom66.de>
parents: 717
diff changeset
125 $ falist_set_unique LIST K4 "V4"
2502e077d5e9 farray.sh: Implement "falist_set_unique()" that does not overwrite existing key-value pairs
Franz Glasner <fzglas.hg@dom66.de>
parents: 717
diff changeset
126 $ falist_debug LIST
2502e077d5e9 farray.sh: Implement "falist_set_unique()" that does not overwrite existing key-value pairs
Franz Glasner <fzglas.hg@dom66.de>
parents: 717
diff changeset
127 DEBUG: alist `LIST' has length 4
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
128 DEBUG: the items:
718
2502e077d5e9 farray.sh: Implement "falist_set_unique()" that does not overwrite existing key-value pairs
Franz Glasner <fzglas.hg@dom66.de>
parents: 717
diff changeset
129 DEBUG: `K1' -> `V1'
2502e077d5e9 farray.sh: Implement "falist_set_unique()" that does not overwrite existing key-value pairs
Franz Glasner <fzglas.hg@dom66.de>
parents: 717
diff changeset
130 DEBUG: `K2' -> `V2 2'
2502e077d5e9 farray.sh: Implement "falist_set_unique()" that does not overwrite existing key-value pairs
Franz Glasner <fzglas.hg@dom66.de>
parents: 717
diff changeset
131 DEBUG: `K3' -> `" 111222333" \'444555 '
2502e077d5e9 farray.sh: Implement "falist_set_unique()" that does not overwrite existing key-value pairs
Franz Glasner <fzglas.hg@dom66.de>
parents: 717
diff changeset
132 DEBUG: `K4' -> `V4'
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
133 $ falist_release LIST
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
134 $ check_no_alist_artifacts
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
135
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
136
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
137 Iteration
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
138 =========
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
139
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
140 ITERATE (manual indexing)
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
141
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
142 $ falist_create LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
143 $ falist_set LIST K1 V1
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
144 $ falist_set LIST K2 "V2 2"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
145 $ falist_set LIST K3 $'" 111222333" \\\'444555 ' # '
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
146
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
147 Iteration by indexing key and values separately
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
148
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
149 $ _i=1
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
150 > while falist_tryget_key_at_index _k LIST ${_i}; do
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
151 > # cannot fail under "normal" circumstances
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
152 > falist_tryget_value_at_index _v LIST ${_i}
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
153 > printf " KEY: \`%s', VAL: \`%s'\\n" "${_k}" "${_v}"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
154 > _i=$((_i + 1))
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
155 > done
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
156 KEY: `K1', VAL: `V1'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
157 KEY: `K2', VAL: `V2 2'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
158 KEY: `K3', VAL: `" 111222333" \'444555 '
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
159
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
160 ITERATE (manual indexing over items)
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
161
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
162 $ _i=1
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
163 > while falist_tryget_item_at_index _k _v LIST ${_i}; do
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
164 > printf " KEY: \`%s', VAL: \`%s'\\n" "${_k}" "${_v}"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
165 > _i=$((_i + 1))
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
166 > done
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
167 KEY: `K1', VAL: `V1'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
168 KEY: `K2', VAL: `V2 2'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
169 KEY: `K3', VAL: `" 111222333" \'444555 '
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
170
723
a97ec3f07bdb farray.sh: REFACTOR: More flexible metadata retrieval.
Franz Glasner <fzglas.hg@dom66.de>
parents: 719
diff changeset
171 ITERATE (for each, by name)
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
172
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
173 $ falist_for_each LIST $'printf "EACH: %s key \\`%s\\\', value \\`%s\\\' at idx %d\\n"' # `
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
174 EACH: LIST key `K1', value `V1' at idx 1
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
175 EACH: LIST key `K2', value `V2 2' at idx 2
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
176 EACH: LIST key `K3', value `" 111222333" \'444555 ' at idx 3
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
177
723
a97ec3f07bdb farray.sh: REFACTOR: More flexible metadata retrieval.
Franz Glasner <fzglas.hg@dom66.de>
parents: 719
diff changeset
178 ITERATE (for each, by value)
a97ec3f07bdb farray.sh: REFACTOR: More flexible metadata retrieval.
Franz Glasner <fzglas.hg@dom66.de>
parents: 719
diff changeset
179
a97ec3f07bdb farray.sh: REFACTOR: More flexible metadata retrieval.
Franz Glasner <fzglas.hg@dom66.de>
parents: 719
diff changeset
180 $ falist_for_each "$LIST" $'printf "EACH: %s key \\`%s\\\', value \\`%s\\\' at idx %d\\n"' # `
729
05a325c7d5c5 farray.sh: change token prefixes again
Franz Glasner <fzglas.hg@dom66.de>
parents: 728
diff changeset
181 EACH: _farr_KV\[\?,\?\]:[a-f0-9]+ key `K1', value `V1' at idx 1 (re)
05a325c7d5c5 farray.sh: change token prefixes again
Franz Glasner <fzglas.hg@dom66.de>
parents: 728
diff changeset
182 EACH: _farr_KV\[\?,\?\]:[a-f0-9]+ key `K2', value `V2 2' at idx 2 (re)
05a325c7d5c5 farray.sh: change token prefixes again
Franz Glasner <fzglas.hg@dom66.de>
parents: 728
diff changeset
183 EACH: _farr_KV\[\?,\?\]:[a-f0-9]+ key `K3', value `" 111222333" \\'444555 ' at idx 3 (re)
723
a97ec3f07bdb farray.sh: REFACTOR: More flexible metadata retrieval.
Franz Glasner <fzglas.hg@dom66.de>
parents: 719
diff changeset
184
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
185 $ falist_clear LIST
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
186 $ falist_release LIST
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
187 $ falist_release LIST
716
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
188 ERROR: object `LIST' not created properly: token empty
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
189 [1]
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
190
606
0ad7b2120e74 farray.sh: tests: add forgotten check for left artifacts (memory leaks)
Franz Glasner <fzglas.hg@dom66.de>
parents: 605
diff changeset
191 $ check_no_alist_artifacts
0ad7b2120e74 farray.sh: tests: add forgotten check for left artifacts (memory leaks)
Franz Glasner <fzglas.hg@dom66.de>
parents: 605
diff changeset
192
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
193
607
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
194 Valid and Invalid Indices
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
195
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
196 $ falist_create LIST
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
197 $ falist_set LIST 'KEY 1' 'VAL 1'
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
198 $ falist_set LIST 'KEY 2' 'VAL 2'
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
199 $ falist_set LIST 'KEY 3' 'VAL 3'
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
200
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
201 $ (falist_tryget_item_at_index _k _v LIST "")
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
202 ERROR: missing index
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
203 [70]
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
204
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
205 $ (falist_tryget_item_at_index _k _v LIST)
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
206 ERROR: missing index
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
207 [70]
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
208
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
209 $ falist_tryget_item_at_index _k _v LIST 4
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
210 [1]
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
211
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
212 $ falist_tryget_item_at_index _k _v LIST 0
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
213 $ printf '%s:%s' "$_k" "$_v"
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
214 KEY 3:VAL 3 (no-eol)
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
215
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
216 $ falist_tryget_item_at_index _k _v LIST -2
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
217 $ printf '%s:%s' "$_k" "$_v"
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
218 KEY 1:VAL 1 (no-eol)
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
219
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
220 $ falist_tryget_item_at_index _k _v LIST -3
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
221 [1]
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
222
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
223 $ falist_release LIST
607
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
224 $ check_no_alist_artifacts
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
225
c450fd0eaddb farray.sh: Generalized indices for falist_tryget_{item,key,value}_at_index()
Franz Glasner <fzglas.hg@dom66.de>
parents: 606
diff changeset
226
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
227 Deletion of keys
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
228 ================
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
229
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
230 $ falist_create LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
231 $ falist_set LIST 'key 1' 'value 1'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
232 $ falist_set LIST 'key 2' 'value 2'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
233 $ falist_set LIST 'key 3' 'value 3'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
234 $ falist_set LIST 'key 4' 'value 4'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
235 $ falist_set LIST 'key 5' 'value 5'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
236 $ falist_trydel LIST 'key 1'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
237 $ falist_trydel LIST 'key 5'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
238 $ falist_trydel LIST 'key 3'
605
96366e2075fe farray.sh: enhance unittests for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 604
diff changeset
239 $ falist_debug LIST
96366e2075fe farray.sh: enhance unittests for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 604
diff changeset
240 DEBUG: alist `LIST' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
241 DEBUG: the items:
605
96366e2075fe farray.sh: enhance unittests for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 604
diff changeset
242 DEBUG: `key 2' -> `value 2'
96366e2075fe farray.sh: enhance unittests for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 604
diff changeset
243 DEBUG: `key 4' -> `value 4'
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
244 $ falist_trydel LIST "non-existing key"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
245 [1]
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
246 $ falist_print_length LIST
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
247 2 (no-eol)
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
248 $ falist_get _var LIST 'key 2'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
249 $ printf '%s' "$_var"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
250 value 2 (no-eol)
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
251 $ falist_get _var LIST 'key 4'
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
252 $ printf '%s' "$_var"
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
253 value 4 (no-eol)
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
254
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
255 $ falist_release LIST
604
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
256
45c47bc1f7d2 farray.sh: Moved all currently existing tests for alists into cram tests.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
257 $ check_no_alist_artifacts
612
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
258
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
259
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
260 Compare
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
261 =======
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
262
613
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
263 $ falist_create LIST1 K1 V1 K2 V2
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
264 $ falist_debug LIST1
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
265 DEBUG: alist `LIST1' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
266 DEBUG: the items:
613
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
267 DEBUG: `K1' -> `V1'
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
268 DEBUG: `K2' -> `V2'
612
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
269
613
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
270 $ falist_create LIST2 K2 V2 K1 V1
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
271 $ falist_debug LIST2
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
272 DEBUG: alist `LIST2' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
273 DEBUG: the items:
613
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
274 DEBUG: `K2' -> `V2'
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
275 DEBUG: `K1' -> `V1'
612
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
276
613
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
277 $ falist_create LIST3 K1 V1 K2 V2
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
278 $ falist_debug LIST3
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
279 DEBUG: alist `LIST3' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
280 DEBUG: the items:
613
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
281 DEBUG: `K1' -> `V1'
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
282 DEBUG: `K2' -> `V2'
612
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
283
613
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
284 $ falist_create LIST4 K1 V1 K2 V2-4
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
285 $ falist_debug LIST4
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
286 DEBUG: alist `LIST4' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
287 DEBUG: the items:
613
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
288 DEBUG: `K1' -> `V1'
17194ffe3638 farray.sh: falist_create() and falist_set() now accept a sequence of key-value pairs.
Franz Glasner <fzglas.hg@dom66.de>
parents: 612
diff changeset
289 DEBUG: `K2' -> `V2-4'
612
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
290
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
291 $ falist_are_equal LIST1 LIST2
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
292 $ falist_are_equal LIST1 LIST4
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
293 [1]
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
294 $ falist_are_equal_with_order LIST1 LIST2
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
295 [1]
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
296 $ falist_are_equal_with_order LIST1 LIST3
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
297
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
298 $ falist_clear LIST2
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
299 $ falist_are_equal LIST1 LIST2
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
300 [1]
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
301
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
302 $ falist_clear LIST3
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
303 $ falist_are_equal_with_order LIST2 LIST3
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
304
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
305 $ falist_release LIST1
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
306 $ falist_release LIST2
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
307 $ falist_release LIST3
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
308 $ falist_release LIST4
612
c9ef2339618d farray.sh: Implemented comparison (ordered and unordered) for alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 607
diff changeset
309
614
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
310 $ check_no_alist_artifacts
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
311
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
312
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
313 Updating
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
314 ========
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
315
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
316 $ falist_create ARR "Key 1" "Value 1" "Key 2" 'Value 2 '\'''
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
317 $ falist_create UPDATE1 "Key 1" "Value 1" "Key 2" 'Value 2 '\'''
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
318 $ falist_create UPDATE2 "Key 2" 'Value 2 (Updated) '\''' "Key 3" "Value 3"
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
319 $ falist_create EMPTY
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
320
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
321 $ falist_are_equal_with_order ARR UPDATE1
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
322 $ falist_are_equal_with_order ARR UPDATE2
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
323 [1]
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
324
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
325 $ falist_update ARR UPDATE1
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
326 $ falist_are_equal_with_order ARR UPDATE1
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
327
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
328 $ falist_update ARR UPDATE2
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
329 $ falist_debug ARR
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
330 DEBUG: alist `ARR' has length 3
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
331 DEBUG: the items:
614
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
332 DEBUG: `Key 1' -> `Value 1'
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
333 DEBUG: `Key 2' -> `Value 2 (Updated) ''
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
334 DEBUG: `Key 3' -> `Value 3'
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
335
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
336 Updating an into an empty alist is just a copy
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
337
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
338 $ falist_update EMPTY UPDATE1
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
339 $ falist_debug EMPTY
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
340 DEBUG: alist `EMPTY' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
341 DEBUG: the items:
614
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
342 DEBUG: `Key 1' -> `Value 1'
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
343 DEBUG: `Key 2' -> `Value 2 ''
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
344 $ falist_debug UPDATE1
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
345 DEBUG: alist `UPDATE1' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
346 DEBUG: the items:
614
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
347 DEBUG: `Key 1' -> `Value 1'
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
348 DEBUG: `Key 2' -> `Value 2 ''
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
349
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
350 $ falist_release ARR
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
351 $ falist_release UPDATE1
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
352 $ falist_release UPDATE2
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
353 $ falist_release EMPTY
614
62fbc4316d97 farray.sh: Implement falist_update(): update an existing alist from another
Franz Glasner <fzglas.hg@dom66.de>
parents: 613
diff changeset
354
615
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
355 $ check_no_alist_artifacts
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
356
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
357
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
358 Items / Keys / Values
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
359 =====================
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
360
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
361 $ farray_create KEYS
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
362 $ farray_create VALUES
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
363 $ farray_create ITEMS
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
364 $ falist_create LIST "Key 1" "Value 1" "Key 2" 'Value 2 '\'''
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
365 $ falist_items ITEMS LIST
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
366 $ farray_debug ITEMS
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
367 DEBUG: array `ITEMS' has length 4
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
368 DEBUG: the items:
615
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
369 DEBUG: 1: `Key 1'
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
370 DEBUG: 2: `Value 1'
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
371 DEBUG: 3: `Key 2'
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
372 DEBUG: 4: `Value 2 ''
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
373 $ falist_keys KEYS LIST
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
374 $ farray_debug KEYS
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
375 DEBUG: array `KEYS' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
376 DEBUG: the items:
615
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
377 DEBUG: 1: `Key 1'
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
378 DEBUG: 2: `Key 2'
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
379 $ falist_values VALUES LIST
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
380 $ farray_debug VALUES
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
381 DEBUG: array `VALUES' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
382 DEBUG: the items:
615
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
383 DEBUG: 1: `Value 1'
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
384 DEBUG: 2: `Value 2 ''
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
385
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
386 $ falist_release LIST
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
387 $ farray_release KEYS
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
388 $ farray_release VALUES
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
389 $ farray_release ITEMS
615
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
390
454ce7fa25c8 farray.sh: Implement falist_items(), falist_keys() and falist_values()
Franz Glasner <fzglas.hg@dom66.de>
parents: 614
diff changeset
391 $ check_no_alist_artifacts
716
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
392
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
393
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
394 Cross Type Checks
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
395 =================
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
396
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
397 $ falist_create LIST
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
398 $ (farray_append LIST value)
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
399 ERROR: object `LIST' is not an array
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
400 [70]
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
401 $ falist_release LIST
716
36d953791e0c farray.sh: The token values are prepended by a type-specific prefix: can now easily determine whether it is an array or alist from the value in its name
Franz Glasner <fzglas.hg@dom66.de>
parents: 651
diff changeset
402 $ check_no_alist_artifacts
717
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
403
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
404
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
405 Other Type Checks
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
406 =================
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
407
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
408 $ falist_type
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
409 unknown (no-eol)
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
410 $ falist_type __UNKNOWN_VARIABLE__
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
411 unknown (no-eol)
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
412 $ testvar='foo'
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
413 $ falist_type testvar
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
414 value (no-eol)
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
415 $ testvar=''
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
416 $ falist_type testvar
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
417 null (no-eol)
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
418 $ falist_isalist testvar
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
419 [1]
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
420 $ falist_create LIST
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
421 $ falist_type LIST
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
422 alist (no-eol)
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
423 $ falist_isalist LIST
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
424 $ falist_release LIST
717
f4725ad5cd21 farray.sh: type tests for array and alist
Franz Glasner <fzglas.hg@dom66.de>
parents: 716
diff changeset
425 $ check_no_alist_artifacts
719
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
426
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
427
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
428 Generic Destruction
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
429 ===================
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
430
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
431 $ falist_create LIST k1 v2
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
432 $ falist_debug LIST
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
433 DEBUG: alist `LIST' has length 1
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
434 DEBUG: the items:
719
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
435 DEBUG: `k1' -> `v2'
728
858f4208d9cb farray.sh: Resource management by reference counting done
Franz Glasner <fzglas.hg@dom66.de>
parents: 726
diff changeset
436 $ _farr_release_object "$LIST"
719
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
437 $ check_no_alist_artifacts
728
858f4208d9cb farray.sh: Resource management by reference counting done
Franz Glasner <fzglas.hg@dom66.de>
parents: 726
diff changeset
438 $ (_farr_release_object "$LIST")
729
05a325c7d5c5 farray.sh: change token prefixes again
Franz Glasner <fzglas.hg@dom66.de>
parents: 728
diff changeset
439 ERROR: falist `_farr_KV\[\?,\?\]:([a-f0-9]+)' not created properly: no object for token `\1' (re)
728
858f4208d9cb farray.sh: Resource management by reference counting done
Franz Glasner <fzglas.hg@dom66.de>
parents: 726
diff changeset
440 [1]
719
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
441 $ LIST=''
728
858f4208d9cb farray.sh: Resource management by reference counting done
Franz Glasner <fzglas.hg@dom66.de>
parents: 726
diff changeset
442 $ _farr_release_object "$LIST"
719
b2757e72b517 farray.sh: The first preparations to allow arrays/alists as values in other arrays or alists
Franz Glasner <fzglas.hg@dom66.de>
parents: 718
diff changeset
443 $ check_no_alist_artifacts
726
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
444
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
445
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
446 Complex Debug
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
447 =============
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
448
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
449 $ falist_create LIST
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
450 $ falist_set LIST K1 V1
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
451 $ falist_create ITEM1 K11 V11 K22 V22
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
452 $ falist_set LIST K2 "$ITEM1"
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
453 $ falist_release ITEM1
726
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
454 $ falist_debug LIST
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
455 DEBUG: alist `LIST' has length 2
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
456 DEBUG: the items:
726
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
457 DEBUG: `K1' -> `V1'
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
458 DEBUG: `K2' -> >>>
726
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
459 DEBUG: alist with token `[a-f0-9]+' has length 2 (re)
733
772e4999562b farray.sh: Unified the output of farray_debug() and falist_debug()
Franz Glasner <fzglas.hg@dom66.de>
parents: 730
diff changeset
460 DEBUG: the items:
726
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
461 DEBUG: `K11' -> `V11'
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
462 DEBUG: `K22' -> `V22'
730
8f1583faf9ea farray.sh: Rename farray_destroy() to farray_release() and falist_destroy() to falist_release()
Franz Glasner <fzglas.hg@dom66.de>
parents: 729
diff changeset
463 $ falist_release LIST
726
23f6d2993fa2 farray.sh: Test the debug output and the destruction of complex objects.
Franz Glasner <fzglas.hg@dom66.de>
parents: 724
diff changeset
464 $ check_no_alist_artifacts