*.deb extraction utility (also *.dsc by wrapping “dpkg-source -x”)
[shellsnippets/shellsnippets.git] / mksh / assotest
1 # $MirOS: contrib/hosted/tg/historic/assotest,v 1.3 2013/11/30 13:45:20 tg Exp $
2 #-
3 # some number of interactive tests for asso-kit
4
5 if [[ $1 != x ]]; then
6         dn="$(dirname "$0")"
7         bn="$(basename "$0")"
8         cd "$dn"
9         env -i HOME=/ SHELL=/bin/mksh /bin/mksh "$bn" x "$@" | \
10             egrep -ve '^PIPESTATUS\[' -e '^ASSO_' \
11             -e  '^(BASHPID|COLUMNS|EPOCHREALTIME|HOME|IFS|KSHE*[UG]ID|KSH_VERSION|LINES|OPTIND|PATH|PGRP|PIPESTATUS|PPID|PS[1234]|PWD|RANDOM|SECONDS|SHELL|TMOUT|USER_ID)(=|$)'
12         exit
13 fi
14 shift
15
16 typeset -Z11 -Uui16 ASSO_Lcdbhash_result
17 function Lcdbhash_add {
18         [[ -o utf8-mode ]]; typeset u=$?
19         set +U
20         typeset s="$*"
21         [[ -n $s ]] || { s=$(cat;print x); s=${s%x}; }
22         typeset -i i=0 n=${#s}
23
24         while (( i < n )); do
25                 ((# ASSO_Lcdbhash_result += 1#${s:(i++):1} ))
26         done
27
28         (( u )) || set -U
29 }
30 function somehash {
31         ASSO_Lcdbhash_result=5381
32         Lcdbhash_add "$@"
33         print $ASSO_Lcdbhash_result
34 }
35
36 mydir=$(dirname "$(realpath "$0")")
37 PATH="$mydir:$mydir/..:$PATH" . assockit.ksh
38
39 #asso_setidx 'test' 'foo'
40 #asso_seti 123 'test' 'foo' 0
41 #asso_seti 456 'test' 'foo' 1
42 ##asso_unset test foo 0
43 #IFS=
44 #set
45 #exit
46
47 # { 'foo': [ { 'baz': 123 } ] } named 'test' becomes:
48
49 asso_setidx 'test' 'foo'
50 asso_setidx 'test' 'oof'
51 asso_seti 123 'test' 'foo' 0 'baz'
52 asso_seti 456 'test' 'oof' 0 'baz'
53
54 print "v=$(asso_getv 'test' 'foo' 0 'baz')/$(asso_getv 'test' 'oof' 0 'baz')"
55 print "t=$(asso_gett 'test' 'foo' 0 'baz')/$(asso_gett 'test' 'oof' 0 'baz')"
56
57 IFS=
58 set
59 IFS=$' \t\n'
60
61 print now unsetting
62 asso_unset test foo
63 #asso_setidx 'test' 'foo'
64 #asso_seti 789 'test' 'foo' 0 'baz'
65 #print "v=$(asso_getv 'test' 'foo' 0 'baz')/$(asso_getv 'test' 'oof' 0 'baz')"
66 #print "t=$(asso_gett 'test' 'foo' 0 'baz')/$(asso_gett 'test' 'oof' 0 'baz')"
67 IFS=
68 set
69 IFS=$' \t\n'