comparison tests/farray-array.t @ 723:a97ec3f07bdb

farray.sh: REFACTOR: More flexible metadata retrieval. Using an array or alist variable name or token value (with prefix) is now supported in every function. This is possible because the value prefixes contain questin marks (?) which are not allowed in shell variable names. This again is a major precondition for recursive data structures (arrays/alists in arrays/alists).
author Franz Glasner <fzglas.hg@dom66.de>
date Sat, 05 Oct 2024 21:55:55 +0200
parents b2757e72b517
children 3adb26525b19
comparison
equal deleted inserted replaced
722:9c860f2abbdc 723:a97ec3f07bdb
43 DEBUG: 1: `0' 43 DEBUG: 1: `0'
44 DEBUG: 2: `1' 44 DEBUG: 2: `1'
45 DEBUG: 3: `2' 45 DEBUG: 3: `2'
46 DEBUG: 4: `3 4 5' 46 DEBUG: 4: `3 4 5'
47 DEBUG: 5: `" 678" \'90 ' 47 DEBUG: 5: `" 678" \'90 '
48 # $ farray_debug "$TEST"
49 # DEBUG: array with token `[a-f0-9]+' has length 5 (re)
50 # DEBUG: its contents:
51 # DEBUG: 1: `0'
52 # DEBUG: 2: `1'
53 # DEBUG: 3: `2'
54 # DEBUG: 4: `3 4 5'
55 # DEBUG: 5: `" 678" \'90 '
48 $ farray_destroy TEST 56 $ farray_destroy TEST
49 $ check_no_array_artifacts 57 $ check_no_array_artifacts
50 58
51 Create, clear and destroy an array 59 Create, clear and destroy an array
52 60
908 $ farray_contains TEST $'" 678" \\\'910 ' 916 $ farray_contains TEST $'" 678" \\\'910 '
909 $ farray_contains TEST '11' 917 $ farray_contains TEST '11'
910 918
911 $ farray_contains TEST '0 ' 919 $ farray_contains TEST '0 '
912 [1] 920 [1]
921
922 $ farray_destroy TEST
923 $ check_no_array_artifacts
924
925
926 Iterating
927 =========
928
929 $ farray_create TEST 0 1 2 '3 4 5' $'" 667788" \\\'910 ' 11
930
931 MANUAL (by name)
932
933 $ _v=''
934 > _i=1
935 > while farray_tryget _v TEST ${_i}; do
936 > printf " IDX: \`%d', VAL: \`%s'\\n" "${_i}" "${_v}"
937 > _i=$((_i + 1))
938 > done
939 IDX: `1', VAL: `0'
940 IDX: `2', VAL: `1'
941 IDX: `3', VAL: `2'
942 IDX: `4', VAL: `3 4 5'
943 IDX: `5', VAL: `" 667788" \'910 '
944 IDX: `6', VAL: `11'
945
946 MANUAL (by value, reversed, using negative indexes)
947
948 $ _v=''
949 > _i=0
950 > while farray_tryget _v "$TEST" ${_i}; do
951 > printf " IDX: \`%d', VAL: \`%s'\\n" "${_i}" "${_v}"
952 > _i=$((_i - 1))
953 > done
954 IDX: `0', VAL: `11'
955 IDX: `-1', VAL: `" 667788" \'910 '
956 IDX: `-2', VAL: `3 4 5'
957 IDX: `-3', VAL: `2'
958 IDX: `-4', VAL: `1'
959 IDX: `-5', VAL: `0'
960
961 ITERATE (for each, by name)
962
963 $ farray_for_each TEST $'printf "EACH: %s at idx %d: value is \\`%s\\\'\\n"'
964 EACH: TEST at idx 1: value is `0'
965 EACH: TEST at idx 2: value is `1'
966 EACH: TEST at idx 3: value is `2'
967 EACH: TEST at idx 4: value is `3 4 5'
968 EACH: TEST at idx 5: value is `" 667788" \'910 '
969 EACH: TEST at idx 6: value is `11'
970
971 ITERATE (for each, by value)
972
973 $ farray_for_each "$TEST" $'printf "EACH: %s at idx %d: value is \\`%s\\\'\\n"'
974 EACH: _farr_A\?_[a-f0-9]+ at idx 1: value is `0' (re)
975 EACH: _farr_A\?_[a-f0-9]+ at idx 2: value is `1' (re)
976 EACH: _farr_A\?_[a-f0-9]+ at idx 3: value is `2' (re)
977 EACH: _farr_A\?_[a-f0-9]+ at idx 4: value is `3 4 5' (re)
978 EACH: _farr_A\?_[a-f0-9]+ at idx 5: value is `" 667788" \\'910 ' (re)
979 EACH: _farr_A\?_[a-f0-9]+ at idx 6: value is `11' (re)
980
981 REVERSE ITERATE (for each, by name)
982
983 $ farray_reversed_for_each TEST $'printf "EACH: %s at idx %d: value is \\`%s\\\'\\n"'
984 EACH: TEST at idx 6: value is `11'
985 EACH: TEST at idx 5: value is `" 667788" \'910 '
986 EACH: TEST at idx 4: value is `3 4 5'
987 EACH: TEST at idx 3: value is `2'
988 EACH: TEST at idx 2: value is `1'
989 EACH: TEST at idx 1: value is `0'
990
991 ITERATE (for each, by value)
992
993 $ farray_reversed_for_each "$TEST" $'printf "EACH: %s at idx %d: value is \\`%s\\\'\\n"'
994 EACH: _farr_A\?_[a-f0-9]+ at idx 6: value is `11' (re)
995 EACH: _farr_A\?_[a-f0-9]+ at idx 5: value is `" 667788" \\'910 ' (re)
996 EACH: _farr_A\?_[a-f0-9]+ at idx 4: value is `3 4 5' (re)
997 EACH: _farr_A\?_[a-f0-9]+ at idx 3: value is `2' (re)
998 EACH: _farr_A\?_[a-f0-9]+ at idx 2: value is `1' (re)
999 EACH: _farr_A\?_[a-f0-9]+ at idx 1: value is `0' (re)
913 1000
914 $ farray_destroy TEST 1001 $ farray_destroy TEST
915 $ check_no_array_artifacts 1002 $ check_no_array_artifacts
916 1003
917 1004
988 $ ( farray_create ) 1075 $ ( farray_create )
989 ERROR: missing farray name 1076 ERROR: missing farray name
990 [70] 1077 [70]
991 1078
992 $ ( farray_append ) 1079 $ ( farray_append )
993 ERROR: missing farray name 1080 ERROR: missing farray name or token value
994 [70] 1081 [70]
995 1082
996 $ TEST='' 1083 $ TEST=''
997 $ (farray_append TEST) 1084 $ (farray_append TEST)
998 ERROR: object `TEST' not created properly: token empty 1085 ERROR: object `TEST' not created properly: token empty
1000 1087
1001 $ check_no_array_artifacts 1088 $ check_no_array_artifacts
1002 1089
1003 $ farray_create DUP 1090 $ farray_create DUP
1004 $ (farray_create DUP) 1091 $ (farray_create DUP)
1005 ERROR: object `DUP' already created \(value `_farr_A\*_[a-f0-9]+'\) (re) 1092 ERROR: object `DUP' already created \(value `_farr_A\?_[a-f0-9]+'\) (re)
1006 [70] 1093 [70]
1007 1094
1008 $ check_no_array_artifacts 1095 $ check_no_array_artifacts
1009 _farr_A_[0-9a-f]+__=0 (re) 1096 _farr_A_[0-9a-f]+__=0 (re)
1010 [1] 1097 [1]
1057 DEBUG: 1: `i1' 1144 DEBUG: 1: `i1'
1058 DEBUG: 2: `i2' 1145 DEBUG: 2: `i2'
1059 $ _farr_destroy_object "$TEST" 1146 $ _farr_destroy_object "$TEST"
1060 $ check_no_array_artifacts 1147 $ check_no_array_artifacts
1061 $ (_farr_destroy_object "$TEST") 1148 $ (_farr_destroy_object "$TEST")
1062 ERROR: farray with token value `_farr_A\*_([a-f0-9]+)' not created properly: no storage for token `\1' (re) 1149 ERROR: farray `_farr_A\?_([a-f0-9]+)' not created properly: no storage for token `\1' (re)
1063 [1] 1150 [1]
1064 $ TEST='' 1151 $ TEST=''
1065 $ _farr_destroy_object "$TEST" 1152 $ _farr_destroy_object "$TEST"
1066 $ check_no_array_artifacts 1153 $ check_no_array_artifacts