mirror of
https://github.com/zdharma-continuum/zinit-module.git
synced 2024-11-21 13:27:58 +01:00
331 lines
6.5 KiB
Text
331 lines
6.5 KiB
Text
# Tests for the zsh/param/private module
|
|
|
|
%prep
|
|
|
|
module_path=( `pwd`/Modules )
|
|
modname="zdharma_continuum/zgdbm"
|
|
#modname="zsh/db/gdbm"
|
|
dbfile=db.gdbm
|
|
if ! zmodload $modname ; then
|
|
ZTST_unimplemented="can't load $modname module for testing"
|
|
fi
|
|
rm -f db.gdbm
|
|
|
|
%test
|
|
|
|
(zmodload -u $modname && zmodload $modname)
|
|
0:unload and reload the module without crashing
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
zuntie dbase
|
|
0:create the database
|
|
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
zuntie -u dbase
|
|
0:open the database read-only
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase[testkey]=testdata
|
|
zuntie dbase
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
echo $dbase[testkey]
|
|
zuntie -u dbase
|
|
0:store key in database
|
|
>testdata
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase2
|
|
unset 'dbase2[testkey]'
|
|
zuntie dbase2
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
echo $dbase[testkey]
|
|
zuntie dbase
|
|
0:remove key from database (different variables)
|
|
>
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase[testkey]=testdata
|
|
zuntie dbase
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
echo $dbase[testkey]
|
|
zuntie -u dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
unset 'dbase[testkey]'
|
|
zuntie dbase
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
echo $dbase[testkey]
|
|
zuntie -u dbase
|
|
0:store & remove key from database (the same variables)
|
|
>testdata
|
|
>
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase[testkey]=testdata
|
|
dbase[testkey2]=$dbase[testkey]
|
|
dbase[testkey3]=$dbase[testkey]x$dbase[testkey2]
|
|
zuntie dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
echo $dbase[testkey]
|
|
echo $dbase[testkey2]
|
|
echo $dbase[testkey3]
|
|
zuntie dbase
|
|
0:store 2 keys fetching 1st
|
|
>testdata
|
|
>testdata
|
|
>testdataxtestdata
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
val=$dbase[testkey2]
|
|
unset 'dbase[testkey2]'
|
|
echo $val
|
|
zuntie dbase
|
|
0:unset key that was fetched
|
|
>testdata
|
|
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
local -a result=( "${(kv)dbase[@]}" )
|
|
print -rl -- "${(o)result[@]}"
|
|
zuntie -u dbase
|
|
0:scan read-only tied hash, directly assign local -a
|
|
>testdata
|
|
>testdataxtestdata
|
|
>testkey
|
|
>testkey3
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase=( a a )
|
|
print -rl -- "${(kv)dbase[@]}"
|
|
zuntie dbase
|
|
0:Use scan directly, read-write mode
|
|
>a
|
|
>a
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase=( a b c d )
|
|
zuntie dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
result=( "${(kv)dbase[@]}" )
|
|
print -rl -- "${(o)result[@]}"
|
|
zuntie dbase
|
|
0:replace hash / database, scan
|
|
>a
|
|
>b
|
|
>c
|
|
>d
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
local -a arr
|
|
arr=( "${dbase[@]}" )
|
|
print -rl -- "${(o)arr[@]}"
|
|
zuntie dbase
|
|
0:scan with no (kv)
|
|
>b
|
|
>d
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
result=( "${(k)dbase[@]}" )
|
|
print -rl -- "${(o)result[@]}"
|
|
zuntie dbase
|
|
0:scan with keys only (k)
|
|
>a
|
|
>c
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
result=( "${(v)dbase[@]}" )
|
|
print -rl -- "${(o)result[@]}"
|
|
zuntie dbase
|
|
0:scan with keys only explicit (v)
|
|
>b
|
|
>d
|
|
|
|
rm -f $dbfile
|
|
ztie -r -d db/gdbm -f $dbfile dbase 2>/dev/null
|
|
1:read-only open non-existent database
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase+=( a b )
|
|
echo $dbase[a]
|
|
zuntie dbase
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
echo $dbase[a]
|
|
result=( "${(kv)dbase[@]}" )
|
|
print -rl -- "${(o)result[@]}"
|
|
zuntie -u dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase+=( c d )
|
|
echo $dbase[a]
|
|
echo $dbase[c]
|
|
result=( "${(kv)dbase[@]}" )
|
|
print -rl -- "${(o)result[@]}"
|
|
zuntie dbase
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
echo $dbase[a]
|
|
echo $dbase[c]
|
|
result=( "${(kv)dbase[@]}" )
|
|
print -rl -- "${(o)result[@]}"
|
|
zuntie -u dbase
|
|
0:Append with +=( ), also with existing data, also (kv) scan
|
|
>b
|
|
>b
|
|
>a
|
|
>b
|
|
>b
|
|
>d
|
|
>a
|
|
>b
|
|
>c
|
|
>d
|
|
>b
|
|
>d
|
|
>a
|
|
>b
|
|
>c
|
|
>d
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
echo ${(t)dbase}
|
|
zuntie dbase
|
|
0:Type of tied parameter
|
|
>association-special
|
|
|
|
typeset -ga dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
echo ${(t)dbase}
|
|
zuntie dbase
|
|
0:Type of tied parameter, with preceding unset
|
|
>association-special
|
|
|
|
local -a dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
echo ${(t)dbase}
|
|
zuntie dbase
|
|
0:Type of tied parameter, with local parameter already existing
|
|
>association-local-special
|
|
|
|
local -a dbase
|
|
dbase=( fromarray )
|
|
() {
|
|
local -a dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
echo ${(t)dbase}
|
|
zuntie dbase
|
|
}
|
|
echo $dbase[1]
|
|
ztie -d db/gdbm -f $dbfile dbase2
|
|
echo "Can connect, so untie happened:" $dbase2[a]
|
|
zuntie dbase2
|
|
0:Test of automatic untie (use of local scope) and of scoping
|
|
>association-local-special
|
|
>fromarray
|
|
>Can connect, so untie happened: b
|
|
|
|
echo $zgdbm_tied ${#zgdbm_tied}
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
echo $zgdbm_tied ${#zgdbm_tied}
|
|
ztie -d db/gdbm -f ${dbfile}2 dbase2
|
|
echo $zgdbm_tied ${#zgdbm_tied}
|
|
zuntie -u dbase
|
|
echo $zgdbm_tied ${#zgdbm_tied}
|
|
zuntie dbase2
|
|
echo $zgdbm_tied ${#zgdbm_tied}
|
|
0:zgdbm_tied parameter
|
|
>0
|
|
>dbase 1
|
|
>dbase dbase2 2
|
|
>dbase2 1
|
|
>0
|
|
|
|
unset zgdbm_tied 2>/dev/null
|
|
1:unset of read-only zgdbm_tied parameter
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase[æ¼¢å—]=æ¼¢å—
|
|
echo $dbase[æ¼¢å—]
|
|
zuntie dbase
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
echo $dbase[æ¼¢å—]
|
|
zuntie -u dbase
|
|
0:Unicode test
|
|
>æ¼¢å—
|
|
>æ¼¢å—
|
|
|
|
key="ab"$'\0'"ef"
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase[$key]=value
|
|
echo $dbase[$key]
|
|
zuntie dbase
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
echo $dbase[$key]
|
|
zuntie -u dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase[$key]=$key
|
|
zuntie dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
[[ "$dbase[$key]" = "$key" ]] && echo correct
|
|
zuntie dbase
|
|
0:Metafication of $'\0'
|
|
>value
|
|
>value
|
|
>correct
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase=( æ¼¢å— æ¼¢å— )
|
|
echo $dbase[æ¼¢å—]
|
|
zuntie dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
echo $dbase[æ¼¢å—]
|
|
zuntie dbase
|
|
key="ab"$'\0'"ef"
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase+=( $key $key )
|
|
zuntie dbase
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
[[ "$dbase[$key]" = "$key" ]] && echo correct
|
|
zuntie -u dbase
|
|
0:Unicode & metafication test, different hash access
|
|
>æ¼¢å—
|
|
>æ¼¢å—
|
|
>correct
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase=( æ¼¢å— æ¼¢å— )
|
|
zuntie dbase
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
noglob print -rl ${(kv)dbase[@]}
|
|
zuntie dbase
|
|
0:Hash scanning and metafication
|
|
>æ¼¢å—
|
|
>æ¼¢å—
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
noglob print -rl ${(okv)dbase[@]}
|
|
zuntie dbase
|
|
0:Sorted hash scanning and metafication
|
|
>æ¼¢å—
|
|
>æ¼¢å—
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
zgdbmpath dbase
|
|
[[ $REPLY = */Test/db.gdbm ]] && echo correct
|
|
zuntie dbase
|
|
ztie -r -d db/gdbm -f $dbfile dbase
|
|
zgdbmpath dbase
|
|
[[ $REPLY = */Test/db.gdbm ]] && echo correct
|
|
zuntie -u dbase
|
|
0:zgdbmpath builtin
|
|
>correct
|
|
>correct
|
|
|
|
ztie -d db/gdbm -f $dbfile dbase
|
|
dbase[testkey]=value1
|
|
fun() { while read line; do echo $line; done }
|
|
eval "dbase[testkey]=value2" | fun
|
|
echo $dbase[testkey]
|
|
zgdbmclear dbase testkey
|
|
echo $dbase[testkey]
|
|
0:Test store in forked Zsh
|
|
>value1
|
|
>value2
|
|
|
|
%clean
|
|
|
|
rm -f ${dbfile}*
|