Mercurial > hgrepos > FreeBSD > ports > sysutils > local-bsdtools
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 |
