diff tests/farray-alist.t @ 743:6fcf7da87981

farray.sh: implement "falist_merge()" to merge two "sorted" alists and add the result to a resulting alist
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 08 Oct 2024 15:52:30 +0200
parents dae85cddc47b
children a5918c859fe9
line wrap: on
line diff
--- a/tests/farray-alist.t	Tue Oct 08 09:52:29 2024 +0200
+++ b/tests/farray-alist.t	Tue Oct 08 15:52:30 2024 +0200
@@ -381,6 +381,116 @@
   $ check_no_alist_artifacts
 
 
+Merging
+=======
+
+  $ falist_create RES
+  $ falist_create INPUT1 "K1" "V1" "K2" "V2" "K3" "V3"
+  $ falist_create INPUT2
+  $ falist_merge "$RES" "$INPUT1" "$INPUT2"
+  $ falist_release INPUT1
+  $ falist_release INPUT2
+  $ falist_debug RES
+  DEBUG: alist `RES' has length 3
+  DEBUG:   the items:
+  DEBUG:     `K1' -> `V1'
+  DEBUG:     `K2' -> `V2'
+  DEBUG:     `K3' -> `V3'
+  $ falist_release RES
+  $ check_no_alist_artifacts
+
+  $ falist_create RES
+  $ falist_create INPUT1
+  $ falist_create INPUT2 "k1" "v1" "k2" "v2" "k3" "v3"
+  $ falist_merge "$RES" "$INPUT1" "$INPUT2"
+  $ falist_release INPUT1
+  $ falist_release INPUT2
+  $ falist_debug RES
+  DEBUG: alist `RES' has length 3
+  DEBUG:   the items:
+  DEBUG:     `k1' -> `v1'
+  DEBUG:     `k2' -> `v2'
+  DEBUG:     `k3' -> `v3'
+  $ falist_release RES
+  $ check_no_alist_artifacts
+
+  $ falist_create RES
+  $ falist_create INPUT1 "K1" "V1" "K2" "V2" "K3" "V3"
+  $ falist_create INPUT2 "k1" "v1" "k2" "v2" "k3" "v3" "k4" "v4"
+  $ falist_merge "$RES" "$INPUT1" "$INPUT2"
+  $ falist_release INPUT1
+  $ falist_release INPUT2
+  $ falist_debug RES
+  DEBUG: alist `RES' has length 7
+  DEBUG:   the items:
+  DEBUG:     `K1' -> `V1'
+  DEBUG:     `K2' -> `V2'
+  DEBUG:     `K3' -> `V3'
+  DEBUG:     `k1' -> `v1'
+  DEBUG:     `k2' -> `v2'
+  DEBUG:     `k3' -> `v3'
+  DEBUG:     `k4' -> `v4'
+  $ falist_release RES
+  $ check_no_alist_artifacts
+
+  $ falist_create RES
+  $ falist_create INPUT1 "k1" "v1" "k2" "v2" "k3" "v3" "k4" "v4"
+  $ falist_create INPUT2 "K1" "V1" "K2" "V2" "K3" "V3"
+  $ falist_merge "$RES" "$INPUT1" "$INPUT2"
+  $ falist_release INPUT1
+  $ falist_release INPUT2
+  $ falist_debug RES
+  DEBUG: alist `RES' has length 7
+  DEBUG:   the items:
+  DEBUG:     `K1' -> `V1'
+  DEBUG:     `K2' -> `V2'
+  DEBUG:     `K3' -> `V3'
+  DEBUG:     `k1' -> `v1'
+  DEBUG:     `k2' -> `v2'
+  DEBUG:     `k3' -> `v3'
+  DEBUG:     `k4' -> `v4'
+  $ falist_release RES
+  $ check_no_alist_artifacts
+
+  $ falist_create RES
+  $ falist_create INPUT1 "K1" "V1" "K3" "V3" "k1" "v1" "k4" "v4"
+  $ falist_create INPUT2 "K2" "V2" "k2" "v2" "k3" "v3"
+  $ falist_merge "$RES" "$INPUT1" "$INPUT2"
+  $ falist_release INPUT1
+  $ falist_release INPUT2
+  $ falist_debug RES
+  DEBUG: alist `RES' has length 7
+  DEBUG:   the items:
+  DEBUG:     `K1' -> `V1'
+  DEBUG:     `K2' -> `V2'
+  DEBUG:     `K3' -> `V3'
+  DEBUG:     `k1' -> `v1'
+  DEBUG:     `k2' -> `v2'
+  DEBUG:     `k3' -> `v3'
+  DEBUG:     `k4' -> `v4'
+  $ falist_release RES
+  $ check_no_alist_artifacts
+
+  $ falist_create RES
+  $ falist_create INPUT1 "K1" "V1" "K3" "V3" "k1" "v1" "k4" "v4"
+  $ falist_create INPUT2 "K2" "V2" "k2" "v2" "k3" "v3"
+  $ falist_merge "$RES" INPUT2 INPUT1
+  $ falist_release INPUT1
+  $ falist_release INPUT2
+  $ falist_debug RES
+  DEBUG: alist `RES' has length 7
+  DEBUG:   the items:
+  DEBUG:     `K1' -> `V1'
+  DEBUG:     `K2' -> `V2'
+  DEBUG:     `K3' -> `V3'
+  DEBUG:     `k1' -> `v1'
+  DEBUG:     `k2' -> `v2'
+  DEBUG:     `k3' -> `v3'
+  DEBUG:     `k4' -> `v4'
+  $ falist_release RES
+  $ check_no_alist_artifacts
+
+
 Items / Keys / Values
 =====================