From 4a94495f747fef1b32bb8ea3aa8adbe81314795a Mon Sep 17 00:00:00 2001 From: Saumit Dinesan Date: Mon, 5 Sep 2022 03:26:33 +0530 Subject: spring cleaning 0.3 --- .local/src/blesh/lib/test-util.sh | 1555 ------------------------------------- 1 file changed, 1555 deletions(-) delete mode 100644 .local/src/blesh/lib/test-util.sh (limited to '.local/src/blesh/lib/test-util.sh') diff --git a/.local/src/blesh/lib/test-util.sh b/.local/src/blesh/lib/test-util.sh deleted file mode 100644 index 4ec1155..0000000 --- a/.local/src/blesh/lib/test-util.sh +++ /dev/null @@ -1,1555 +0,0 @@ -# this script is a part of blesh (https://github.com/akinomyoga/ble.sh) under BSD-3-Clause license -ble-import lib/core-test -ble/test/start-section 'ble/util' 1198 -( - ble/test 'bleopt a=1' \ - exit=2 - ble/test 'bleopt a' \ - stdout= exit=2 - ble/test 'bleopt a:=2' - ble/test 'bleopt a' \ - stdout="bleopt a=2" - ble/test '[[ $bleopt_a == 2 ]]' - ble/test "bleopt | grep 'bleopt a='" \ - stdout="bleopt a=2" - ble/test 'bleopt a=3' - ble/test 'bleopt a' \ - stdout="bleopt a=3" - function bleopt/check:a { value=123; } - ble/test 'bleopt a=4 && bleopt a' - stdout="bleopt a=123" - function bleopt/check:a { false; } - ble/test 'bleopt a=5' \ - exit=1 - ble/test 'bleopt a' \ - stdout="bleopt a=123" - ble/test bleopt f:=10 g:=11 - ble/test bleopt f g \ - stdout="bleopt f=10${_ble_term_nl}bleopt g=11" - ble/test bleopt f=12 g=13 - ble/test bleopt f g \ - stdout="bleopt f=12${_ble_term_nl}bleopt g=13" - ble/test bleopt/declare -v b 6 - ble/test bleopt b stdout="bleopt b=6" - ble/test bleopt/declare -n c 7 - ble/test bleopt c stdout="bleopt c=7" - ble/test bleopt d:= e:= - ble/test bleopt/declare -v d 8 - ble/test bleopt/declare -n e 9 - ble/test bleopt d stdout="bleopt d=" - ble/test bleopt e stdout="bleopt e=9" -) -ble/test ble/util/setexit 0 exit=0 -ble/test ble/util/setexit 1 exit=1 -ble/test ble/util/setexit 9 exit=9 -ble/test ble/util/setexit 128 exit=128 -ble/test ble/util/setexit 255 exit=255 -( - a=1 - function f1 { - echo g:$a - local a=2 - echo l:$a - ble/util/unlocal a - echo g:$a - a=3 - } - ble/test 'f1; echo g:$a' \ - stdout=g:1 \ - stdout=l:2 \ - stdout=g:1 \ - stdout=g:3 - function f2 { - echo f1:$a@f2 - local a=3 - echo f2:$a@f2 - ble/util/unlocal a - echo f1:$a@f2 - a=$a+ - } - function f1 { - echo g:$a@f1 - local a=2 - echo f1:$a@f1 - f2 - echo f1:$a@f1 - ble/util/unlocal a - echo g:$a@f1 - a=$a+ - } - ble/test 'a=1; f1; echo g:$a@g' \ - stdout=g:1@f1 \ - stdout=f1:2@f1 \ - stdout=f1:2@f2 \ - stdout=f2:3@f2 \ - stdout=f1:2@f2 \ - stdout=f1:2+@f1 \ - stdout=g:1@f1 \ - stdout=g:1+@g -) -( - function f1 { - local a=1 b=2 - local result=$((a+b)) - local "$1" && ble/util/upvar "$1" "$result" - } - ble/test 'f1 x; ret=$x' ret=3 - ble/test 'f1 a; ret=$a' ret=3 - ble/test 'f1 result; ret=$result' ret=3 - function f2 { - local a=1 - local -a b=(2) - local -a result=($((a+b[0])) y z) - local "$1" && ble/util/uparr "$1" "${result[@]}" - } - ble/test 'f2 x; ret="(${x[*]})"' ret='(3 y z)' - ble/test 'f2 a; ret="(${a[*]})"' ret='(3 y z)' - ble/test 'f2 b; ret="(${b[*]})"' ret='(3 y z)' - ble/test 'f2 result; ret="(${result[*]})"' ret='(3 y z)' -) -( - VARNAMES=(name x y count data) - function print-status { - echo "name=$name x=$x y=$y count=$count data=(${data[*]})" - } - function f1 { - local "${VARNAMES[@]/%/=}" # WA #D1570 checked - name=1 x=2 y=3 count=4 data=(aa bb cc dd) - print-status - ble/util/save-vars save1_ "${VARNAMES[@]}" - name=one x= y=A count=1 data=(Q) - print-status - ble/util/save-vars save2_ "${VARNAMES[@]}" - ble/util/restore-vars save1_ "${VARNAMES[@]}" - print-status - ble/util/restore-vars save2_ "${VARNAMES[@]}" - print-status - } - ble/test f1 \ - stdout='name=1 x=2 y=3 count=4 data=(aa bb cc dd)' \ - stdout='name=one x= y=A count=1 data=(Q)' \ - stdout='name=1 x=2 y=3 count=4 data=(aa bb cc dd)' \ - stdout='name=one x= y=A count=1 data=(Q)' -) -( - declare v=1 - declare -i i=1 - export x=2 - readonly r=3 - declare -a a=() - if ((_ble_bash>=40000)); then - declare -A A=() - declare -u u=a - declare -l l=B - declare -c c=c - fi - if ((_ble_bash>=40300)); then - declare -n n=r - fi - ble/test 'ble/variable#get-attr v; ret=$attr' ret= - ble/test 'ble/variable#get-attr i; ret=$attr' ret=i - ble/test 'ble/variable#get-attr x; ret=$attr' ret=x - ble/test 'ble/variable#get-attr r; ret=$attr' ret=r - ble/test 'ble/variable#get-attr a; ret=$attr' ret=a - if ((_ble_bash>=40000)); then - ble/test 'ble/variable#get-attr u; ret=$attr' ret=u - ble/test 'ble/variable#get-attr l; ret=$attr' ret=l - ble/test 'ble/variable#get-attr c; ret=$attr' ret=c - ble/test 'ble/variable#get-attr A; ret=$attr' ret=A - fi - ble/test 'ble/variable#has-attr i i' - ble/test 'ble/variable#has-attr x x' - ble/test 'ble/variable#has-attr r r' - ble/test 'ble/variable#has-attr a a' - ble/test 'ble/variable#has-attr v i' exit=1 - ble/test 'ble/variable#has-attr v x' exit=1 - ble/test 'ble/variable#has-attr v r' exit=1 - ble/test 'ble/variable#has-attr v a' exit=1 - if ((_ble_bash>=40000)); then - ble/test 'ble/variable#has-attr u u' - ble/test 'ble/variable#has-attr l l' - ble/test 'ble/variable#has-attr c c' - ble/test 'ble/variable#has-attr A A' - ble/test 'ble/variable#has-attr v u' exit=1 - ble/test 'ble/variable#has-attr v l' exit=1 - ble/test 'ble/variable#has-attr v c' exit=1 - ble/test 'ble/variable#has-attr v A' exit=1 - fi - ble/test 'ble/is-inttype i' - ble/test 'ble/is-inttype v' exit=1 - ble/test 'ble/is-readonly r' - ble/test 'ble/is-readonly v' exit=1 - if ((_ble_bash>=40000)); then - ble/test 'ble/is-transformed u' - ble/test 'ble/is-transformed l' - ble/test 'ble/is-transformed c' - ble/test 'ble/is-transformed v' exit=1 - fi -) -function is-global() (readonly "$1"; ! local "$1" 2>/dev/null) -( - v1=1 v2=2 - ((_ble_bash>=40200)) && - declare -g v1u v2u - function f1 { - local v2=22 v3=33 - local v2u v3u - f2 - } - function f2 { - local v4=444 v4u - ble/test 'is-global v0' - ble/test 'is-global v1' - ble/test 'is-global v2' exit=1 - ble/test 'is-global v3' exit=1 - ble/test 'is-global v4' exit=1 - ble/test 'ble/variable#is-global v0' - ble/test 'ble/variable#is-global v1' - ble/test 'ble/variable#is-global v2' exit=1 - ble/test 'ble/variable#is-global v3' exit=1 - ble/test 'ble/variable#is-global v4' exit=1 - ble/test 'ble/variable#is-global v0u' - if ((_ble_bash>=40200)); then - ble/test 'ble/variable#is-global v1u' - ble/test 'ble/variable#is-global v2u' exit=1 - fi - ble/test 'ble/variable#is-global v3u' exit=1 - ble/test 'ble/variable#is-global v4u' exit=1 - } - f1 -) -( - _ble_array_prototype=() - ble/test 'echo ${#_ble_array_prototype[@]}' stdout=0 - ble/array#reserve-prototype 10 - ble/test 'echo ${#_ble_array_prototype[@]}' stdout=10 - ble/test 'x=("${_ble_array_prototype[@]::10}"); echo ${#x[@]}' stdout=10 - ble/array#reserve-prototype 3 - ble/test 'echo ${#_ble_array_prototype[@]}' stdout=10 - ble/test 'x=("${_ble_array_prototype[@]::3}"); echo ${#x[@]}' stdout=3 -) -( - declare -a a=() - declare b= - ble/test 'ble/is-array a' - ble/test 'ble/is-array b' exit=1 - ble/test 'ble/is-array c' exit=1 - if ((_ble_bash>=40000)); then - declare -A A=() - ble/test 'ble/is-array A' exit=1 - ble/test 'ble/is-assoc a' exit=1 - ble/test 'ble/is-assoc A' - ble/test 'ble/is-assoc b' exit=1 - ble/test 'ble/is-assoc c' exit=1 - fi -) -( - ble/test 'ble/array#set a; echo "${#a[@]}:(${a[*]})"' stdout='0:()' - ble/test 'ble/array#set a Q; echo "${#a[@]}:(${a[*]})"' stdout='1:(Q)' - ble/test 'ble/array#set a 1 2 3; echo "${#a[@]}:(${a[*]})"' stdout='3:(1 2 3)' - ble/test 'ble/array#set a; echo "${#a[@]}:(${a[*]})"' stdout='0:()' -) -( - declare -a a=() - ble/array#push a - ble/test 'echo "${#a[@]}:(${a[*]})"' stdout='0:()' - ble/array#push a A - ble/test 'echo "${#a[@]}:(${a[*]})"' stdout='1:(A)' - ble/array#push a B C - ble/test 'echo "${#a[@]}:(${a[*]})"' stdout='3:(A B C)' - ble/array#push a - ble/test 'echo "${#a[@]}:(${a[*]})"' stdout='3:(A B C)' -) -( - function result { echo "$ret:${#arr[*]}:(${arr[*]})"; } - ble/test 'arr=() ; ble/array#pop arr; result' stdout=':0:()' - ble/test 'arr=(1) ; ble/array#pop arr; result' stdout='1:0:()' - ble/test 'arr=(1 2) ; ble/array#pop arr; result' stdout='2:1:(1)' - ble/test 'arr=(0 0 0); ble/array#pop arr; result' stdout='0:2:(0 0)' - ble/test 'arr=(1 2 3); ble/array#pop arr; result' stdout='3:2:(1 2)' - ble/test 'arr=(" a a " " b b " " c c "); ble/array#pop arr; result' \ - stdout=' c c :2:( a a b b )' -) -( - function status { echo "${#a[@]}:(${a[*]})"; } - a=() - ble/array#unshift a - ble/test status stdout='0:()' - ble/array#unshift a A - ble/test status stdout='1:(A)' - ble/array#unshift a - ble/test status stdout='1:(A)' - ble/array#unshift a B - ble/test status stdout='2:(B A)' - ble/array#unshift a C D E - ble/test status stdout='5:(C D E B A)' - a=() - ble/array#unshift a A B - ble/test status stdout='2:(A B)' -) -( - function status { echo "${#a[@]}:(${a[*]})"; } - a=(); ble/array#reverse a - ble/test status stdout='0:()' - a=(1); ble/array#reverse a - ble/test status stdout='1:(1)' - a=(xy zw); ble/array#reverse a - ble/test status stdout='2:(zw xy)' - a=(a 3 x); ble/array#reverse a - ble/test status stdout='3:(x 3 a)' - a=({1..10}) b=({10..1}); ble/array#reverse a - ble/test status stdout="10:(${b[*]})" - a=({1..9}) b=({9..1}); ble/array#reverse a - ble/test status stdout="9:(${b[*]})" -) -( - function status { echo "${#a[@]}:(${a[*]})"; } - a=(); ble/array#insert-at a 0 A B C - ble/test status stdout='3:(A B C)' - a=(); ble/array#insert-at a 1 A B C - ble/test status stdout='3:(A B C)' - a=(x y z); ble/array#insert-at a 0 A - ble/test status stdout='4:(A x y z)' - a=(x y z); ble/array#insert-at a 1 A - ble/test status stdout='4:(x A y z)' - a=(x y z); ble/array#insert-at a 3 A - ble/test status stdout='4:(x y z A)' - a=(x y z); ble/array#insert-at a 0 A B C - ble/test status stdout='6:(A B C x y z)' - a=(x y z); ble/array#insert-at a 1 A B C - ble/test status stdout='6:(x A B C y z)' - a=(x y z); ble/array#insert-at a 3 A B C - ble/test status stdout='6:(x y z A B C)' - a=(x y z); ble/array#insert-at a 0 - ble/test status stdout='3:(x y z)' - a=(x y z); ble/array#insert-at a 1 - ble/test status stdout='3:(x y z)' - a=(x y z); ble/array#insert-at a 3 - ble/test status stdout='3:(x y z)' -) -( - function status { echo "${#a[@]}:(${a[*]})"; } - a=(hello world hello world) - ble/array#insert-after a hello 1 2 3 - ble/test status stdout='7:(hello 1 2 3 world hello world)' - a=(heart world hello world) - ble/array#insert-after a hello 1 2 3 - ble/test status stdout='7:(heart world hello 1 2 3 world)' - a=(hello world hello world) - ble/test 'ble/array#insert-after a check 1 2 3' exit=1 - ble/test status stdout='4:(hello world hello world)' -) -( - function status { echo "${#a[@]}:(${a[*]})"; } - a=(hello world this) - ble/array#insert-before a this with check - ble/test status stdout='5:(hello world with check this)' - a=(hello world this) - ble/test 'ble/array#insert-before a haystack kick check' exit=1 - ble/test status stdout='3:(hello world this)' -) -( - function status { echo "${#a[@]}:(${a[*]})"; } - a=(xxx yyy xxx yyy yyy xxx fdsa fdsa) - ble/array#remove a xxx - ble/test status stdout='5:(yyy yyy yyy fdsa fdsa)' - a=(aa aa aa aa aa) - ble/array#remove a bb - ble/test status stdout='5:(aa aa aa aa aa)' - ble/array#remove a aa - ble/test status stdout='0:()' - ble/array#remove a cc - ble/test status stdout='0:()' -) -( - a=(hello world this hello world) - ble/test 'ble/array#index a hello' ret=0 - a=(world hep this hello world) - ble/test 'ble/array#index a hello' ret=3 - a=(hello world this hello world) - ble/test 'ble/array#index a check' ret=-1 -) -( - a=(hello world this hello world) - ble/test 'ble/array#last-index a hello' ret=3 - a=(world hep this hello world) - ble/test 'ble/array#last-index a hello' ret=3 - a=(hello world this hello world) - ble/test 'ble/array#last-index a check' ret=-1 -) -( - function status { echo "${#a[@]}:(${a[*]})"; } - a=() - ble/test 'ble/array#remove-at a 0; status' stdout='0:()' - ble/test 'ble/array#remove-at a 10; status' stdout='0:()' - a=(x y z) - ble/test 'ble/array#remove-at a 4; status' stdout='3:(x y z)' - ble/test 'ble/array#remove-at a 3; status' stdout='3:(x y z)' - ble/test 'ble/array#remove-at a 1; status' stdout='2:(x z)' - ble/test 'ble/array#remove-at a 0; status' stdout='1:(z)' - ble/test 'ble/array#remove-at a 0; status' stdout='0:()' - a=({a..z}) a1=({a..y}) a2=({b..y}) a3=({b..h} {j..y}) - ble/test 'ble/array#remove-at a 25; status' stdout="25:(${a1[*]})" - ble/test 'ble/array#remove-at a 0; status' stdout="24:(${a2[*]})" - ble/test 'ble/array#remove-at a 7; status' stdout="23:(${a3[*]})" -) -( - _ble_string_prototype=' ' - ble/test 'echo ${#_ble_string_prototype}' stdout=8 - ble/string#reserve-prototype 10 - ble/test 'echo ${#_ble_string_prototype}' stdout=16 - ble/test 'x=${_ble_string_prototype::10}; echo ${#x}' stdout=10 - ble/string#reserve-prototype 3 - ble/test 'echo ${#_ble_string_prototype}' stdout=16 - ble/test 'x=${_ble_string_prototype::3}; echo ${#x}' stdout=3 - ble/string#reserve-prototype 77 - ble/test 'echo ${#_ble_string_prototype}' stdout=128 - ble/test 'x=${_ble_string_prototype::77}; echo ${#x}' stdout=77 -) -( - ble/test 'ble/string#repeat' ret= - ble/test 'ble/string#repeat ""' ret= - ble/test 'ble/string#repeat a' ret= - ble/test 'ble/string#repeat abc' ret= - ble/test 'ble/string#repeat "" ""' ret= - ble/test 'ble/string#repeat a ""' ret= - ble/test 'ble/string#repeat abc ""' ret= - ble/test 'ble/string#repeat "" 0' ret= - ble/test 'ble/string#repeat a 0' ret= - ble/test 'ble/string#repeat abc 0' ret= - ble/test 'ble/string#repeat "" 1' ret= - ble/test 'ble/string#repeat "" 10' ret= - ble/test 'ble/string#repeat a 1' ret=a - ble/test 'ble/string#repeat a 2' ret=aa - ble/test 'ble/string#repeat a 5' ret=aaaaa - ble/test 'ble/string#repeat abc 1' ret=abc - ble/test 'ble/string#repeat abc 2' ret=abcabc - ble/test 'ble/string#repeat abc 5' ret=abcabcabcabcabc - ble/test 'ble/string#repeat ";&|<>" 5' ret=';&|<>;&|<>;&|<>;&|<>;&|<>' -) -( - ble/test 'ble/string#common-prefix' ret= - ble/test 'ble/string#common-prefix ""' ret= - ble/test 'ble/string#common-prefix a' ret= - ble/test 'ble/string#common-prefix "" ""' ret= - ble/test 'ble/string#common-prefix a ""' ret= - ble/test 'ble/string#common-prefix a b' ret= - ble/test 'ble/string#common-prefix a a' ret=a - ble/test 'ble/string#common-prefix abc abc' ret=abc - ble/test 'ble/string#common-prefix abc aaa' ret=a - ble/test 'ble/string#common-prefix abc ccc' ret= - ble/test 'ble/string#common-prefix abc xyz' ret= -) -( - ble/test 'ble/string#common-suffix' ret= - ble/test 'ble/string#common-suffix ""' ret= - ble/test 'ble/string#common-suffix a' ret= - ble/test 'ble/string#common-suffix "" ""' ret= - ble/test 'ble/string#common-suffix a ""' ret= - ble/test 'ble/string#common-suffix a b' ret= - ble/test 'ble/string#common-suffix a a' ret=a - ble/test 'ble/string#common-suffix abc abc' ret=abc - ble/test 'ble/string#common-suffix abc aaa' ret= - ble/test 'ble/string#common-suffix abc ccc' ret=c - ble/test 'ble/string#common-suffix abc xyz' ret= -) -( - function status { echo "${#a[@]}:(""${a[*]}"")"; } - nl=$'\n' - ble/test 'ble/string#split a , "" ; status' stdout='1:()' - ble/test 'ble/string#split a , "1" ; status' stdout='1:(1)' - ble/test 'ble/string#split a , "," ; status' stdout='2:( )' - ble/test 'ble/string#split a , "1," ; status' stdout='2:(1 )' - ble/test 'ble/string#split a , ",2" ; status' stdout='2:( 2)' - ble/test 'ble/string#split a , "1,,3" ; status' stdout='3:(1 3)' - ble/test 'ble/string#split a , "1,2,3" ; status' stdout='3:(1 2 3)' - ble/test 'ble/string#split a " " "1 2 3"; status' stdout='3:(1 2 3)' - ble/test 'ble/string#split a " " "1 2 3"; status' stdout='1:(1 2 3)' - ble/test 'ble/string#split a " " "1'"$nl"'2'"$nl"'3"; status' stdout="1:(1${nl}2${nl}3)" -) -( - function status { echo "${#a[@]}:(${a[*]})"; } - nl=$'\n' ht=$'\t' - ble/test 'ble/string#split-words a "" ; status' stdout='0:()' - ble/test 'ble/string#split-words a "1" ; status' stdout='1:(1)' - ble/test 'ble/string#split-words a " " ; status' stdout='0:()' - ble/test 'ble/string#split-words a "1 " ; status' stdout='1:(1)' - ble/test 'ble/string#split-words a " 2" ; status' stdout='1:(2)' - ble/test 'ble/string#split-words a "1 3" ; status' stdout='2:(1 3)' - ble/test 'ble/string#split-words a "1 2 3"; status' stdout='3:(1 2 3)' - ble/test 'ble/string#split-words a " 1'"$ht"'2'"$ht"'3 "; status' stdout='3:(1 2 3)' - ble/test 'ble/string#split-words a " 1'"$nl"'2'"$nl"'3 "; status' stdout='3:(1 2 3)' -) -( - function status { echo "${#a[@]}:(""${a[*]}"")"; } - nl=$'\n' ht=$'\t' - ble/test 'ble/string#split-lines a "" ; status' stdout='1:()' - ble/test 'ble/string#split-lines a "1" ; status' stdout='1:(1)' - ble/test 'ble/string#split-lines a "'"$nl"'" ; status' stdout='2:( )' - ble/test 'ble/string#split-lines a "1'"$nl"'" ; status' stdout='2:(1 )' - ble/test 'ble/string#split-lines a "'"$nl"'2" ; status' stdout='2:( 2)' - ble/test 'ble/string#split-lines a "1'"$nl$nl"'3" ; status' stdout='3:(1 3)' - ble/test 'ble/string#split-lines a "1'"$nl"'2'"$nl"'3"; status' stdout='3:(1 2 3)' - ble/test 'ble/string#split-lines a "1'"$ht"'2'"$ht"'3"; status' stdout="1:(1${ht}2${ht}3)" - ble/test 'ble/string#split-lines a "1 2 3"; status' stdout="1:(1 2 3)" -) -( - ble/test 'ble/string#count-char hello a' ret=0 - ble/test 'ble/string#count-char hello あ' ret=0 - ble/test 'ble/string#count-char hello e' ret=1 - ble/test 'ble/string#count-char hello l' ret=2 - ble/test 'ble/string#count-char hello olh' ret=4 - ble/test 'ble/string#count-char hello hello' ret=5 - ble/test 'ble/string#count-char "" a' ret=0 - ble/test 'ble/string#count-char "" ab' ret=0 -) -( - ble/test 'ble/string#count-string hello a' ret=0 - ble/test 'ble/string#count-string hello あ' ret=0 - ble/test 'ble/string#count-string hello ee' ret=0 - ble/test 'ble/string#count-string hello e' ret=1 - ble/test 'ble/string#count-string hello l' ret=2 - ble/test 'ble/string#count-string hello ll' ret=1 - ble/test 'ble/string#count-string hello hello' ret=1 - ble/test 'ble/string#count-string "" a' ret=0 - ble/test 'ble/string#count-string "" ab' ret=0 - ble/test 'ble/string#count-string ababababa aba' ret=2 -) -( - ble/test 'ble/string#index-of hello a' ret=-1 - ble/test 'ble/string#index-of hello あ' ret=-1 - ble/test 'ble/string#index-of hello ee' ret=-1 - ble/test 'ble/string#index-of hello e' ret=1 - ble/test 'ble/string#index-of hello l' ret=2 - ble/test 'ble/string#index-of hello ll' ret=2 - ble/test 'ble/string#index-of hello hello' ret=0 - ble/test 'ble/string#index-of "" a' ret=-1 - ble/test 'ble/string#index-of "" ab' ret=-1 - ble/test 'ble/string#index-of ababababa aba' ret=0 -) -( - ble/test 'ble/string#last-index-of hello a' ret=-1 - ble/test 'ble/string#last-index-of hello あ' ret=-1 - ble/test 'ble/string#last-index-of hello ee' ret=-1 - ble/test 'ble/string#last-index-of hello e' ret=1 - ble/test 'ble/string#last-index-of hello l' ret=3 - ble/test 'ble/string#last-index-of hello ll' ret=2 - ble/test 'ble/string#last-index-of hello hello' ret=0 - ble/test 'ble/string#last-index-of "" a' ret=-1 - ble/test 'ble/string#last-index-of "" ab' ret=-1 - ble/test 'ble/string#last-index-of ababababa aba' ret=6 -) -( - ble/test 'ble/string#toggle-case' ret= - ble/test 'ble/string#tolower ' ret= - ble/test 'ble/string#toupper ' ret= - ble/test 'ble/string#capitalize ' ret= - ble/test 'ble/string#toggle-case ""' ret= - ble/test 'ble/string#tolower ""' ret= - ble/test 'ble/string#toupper ""' ret= - ble/test 'ble/string#capitalize ""' ret= - ble/test 'ble/string#toggle-case a' ret=A - ble/test 'ble/string#tolower a' ret=a - ble/test 'ble/string#toupper a' ret=A - ble/test 'ble/string#capitalize a' ret=A - ble/test 'ble/string#toggle-case あ' ret=あ - ble/test 'ble/string#tolower あ' ret=あ - ble/test 'ble/string#toupper あ' ret=あ - ble/test 'ble/string#capitalize あ' ret=あ - ble/test 'ble/string#toggle-case +' ret=+ - ble/test 'ble/string#tolower +' ret=+ - ble/test 'ble/string#toupper +' ret=+ - ble/test 'ble/string#capitalize +' ret=+ - ble/test 'ble/string#toggle-case abc' ret=ABC - ble/test 'ble/string#tolower abc' ret=abc - ble/test 'ble/string#toupper abc' ret=ABC - ble/test 'ble/string#capitalize abc' ret=Abc - ble/test 'ble/string#toggle-case ABC' ret=abc - ble/test 'ble/string#tolower ABC' ret=abc - ble/test 'ble/string#toupper ABC' ret=ABC - ble/test 'ble/string#capitalize ABC' ret=Abc - ble/test 'ble/string#toggle-case aBc' ret=AbC - ble/test 'ble/string#tolower aBc' ret=abc - ble/test 'ble/string#toupper aBc' ret=ABC - ble/test 'ble/string#capitalize aBc' ret=Abc - ble/test 'ble/string#toggle-case +aBc' ret=+AbC - ble/test 'ble/string#tolower +aBc' ret=+abc - ble/test 'ble/string#toupper +aBc' ret=+ABC - ble/test 'ble/string#capitalize +aBc' ret=+Abc - ble/test 'ble/string#capitalize "hello world"' ret='Hello World' - LC_ALL=en_US.utf8 - ble/test 'ble/string#toggle-case +aBc' ret=+AbC - ble/test 'ble/string#tolower +aBc' ret=+abc - ble/test 'ble/string#toupper +aBc' ret=+ABC - ble/test 'ble/string#capitalize +aBc' ret=+Abc - ble/test 'ble/string#capitalize "hello world"' ret='Hello World' -) -( - ble/test 'ble/string#trim ' ret= - ble/test 'ble/string#ltrim' ret= - ble/test 'ble/string#rtrim' ret= - ble/test 'ble/string#trim ""' ret= - ble/test 'ble/string#ltrim ""' ret= - ble/test 'ble/string#rtrim ""' ret= - ble/test 'ble/string#trim "a"' ret=a - ble/test 'ble/string#ltrim "a"' ret=a - ble/test 'ble/string#rtrim "a"' ret=a - ble/test 'ble/string#trim " a "' ret=a - ble/test 'ble/string#ltrim " a "' ret='a ' - ble/test 'ble/string#rtrim " a "' ret=' a' - ble/test 'ble/string#trim " a b "' ret='a b' - ble/test 'ble/string#ltrim " a b "' ret='a b ' - ble/test 'ble/string#rtrim " a b "' ret=' a b' - ble/test 'ble/string#trim "abc"' ret='abc' - ble/test 'ble/string#ltrim "abc"' ret='abc' - ble/test 'ble/string#rtrim "abc"' ret='abc' - ble/test 'ble/string#trim " abc "' ret='abc' - ble/test 'ble/string#ltrim " abc "' ret='abc ' - ble/test 'ble/string#rtrim " abc "' ret=' abc' - for pad in $' \t\n \t\n' $'\t\t\t' $'\n\n\n'; do - ble/test 'ble/string#trim "'"$pad"'abc'"$pad"'"' ret='abc' - ble/test 'ble/string#ltrim "'"$pad"'abc'"$pad"'"' ret="abc${pad}" - ble/test 'ble/string#rtrim "'"$pad"'abc'"$pad"'"' ret="${pad}abc" - done -) -( - ble/test 'ble/string#escape-characters hello' ret=hello - ble/test 'ble/string#escape-characters hello ""' ret=hello - ble/test 'ble/string#escape-characters hello xyz' ret=hello - ble/test 'ble/string#escape-characters hello el' ret='h\e\l\lo' - ble/test 'ble/string#escape-characters hello hl XY' ret='\Xe\Y\Yo' - ble/test 'ble/string#escape-for-sed-regex "A\.[*?+|^\$(){}/"' \ - ret='A\\\.\[\*?+|\^\$(){}\/' - ble/test 'ble/string#escape-for-awk-regex "A\.[*?+|^\$(){}/"' \ - ret='A\\\.\[\*\?\+\|\^\$\(\)\{\}\/' - ble/test 'ble/string#escape-for-extended-regex "A\.[*?+|^\$(){}/"' \ - ret='A\\\.\[\*\?\+\|\^\$\(\)\{\}/' - ble/test 'ble/string#escape-for-bash-glob "A\*?[("' ret='A\\\*\?\[\(' - ble/test 'ble/string#escape-for-bash-single-quote "A'\''B"' ret="A'\''B" - ble/test 'ble/string#escape-for-bash-double-quote "hello \$ \` \\ ! world"' ret='hello \$ \` \\ "\!" world' - input=A$'\\\a\b\e\f\n\r\t\v'\'B output=A'\\\a\b\e\f\n\r\t\v\'\'B - ble/test 'ble/string#escape-for-bash-escape-string "$input"' ret="$output" - ble/test 'ble/string#escape-for-bash-specialchars "[hello] (world) {this,is} "' \ - ret='\[hello\]\ \(world\)\ {this,is}\ \' - ble/test 'ble/string#escape-for-bash-specialchars "[hello] (world) {this,is} " b' \ - ret='\[hello\]\ \(world\)\ \{this\,is\}\ \' - ble/test 'ble/string#escape-for-bash-specialchars "a=b:c:d" c' \ - ret='a\=b\:c\:d' - ble/test $'ble/string#escape-for-bash-specialchars "a\tb\tc"' \ - ret=$'a\\\tb\\\tc' -) -( - ble/test 'ble/string#quote-command' ret= - ble/test 'ble/string#quote-command echo' ret='echo' - ble/test 'ble/string#quote-command echo hello world' ret="echo 'hello' 'world'" - ble/test 'ble/string#quote-command echo "hello world"' ret="echo 'hello world'" - ble/test 'ble/string#quote-command echo "'\''test'\''"' ret="echo ''\''test'\'''" - ble/test 'ble/string#quote-command echo "" "" ""' ret="echo '' '' ''" - ble/test 'ble/string#quote-command echo a{1..4}' ret="echo 'a1' 'a2' 'a3' 'a4'" - ble/test 'ble/util/print-quoted-command' stdout= - ble/test 'ble/util/print-quoted-command echo' stdout='echo' - ble/test 'ble/util/print-quoted-command echo hello world' stdout="echo 'hello' 'world'" - ble/test 'ble/util/print-quoted-command echo "hello world"' stdout="echo 'hello world'" - ble/test 'ble/util/print-quoted-command echo "'\''test'\''"' stdout="echo ''\''test'\'''" - ble/test 'ble/util/print-quoted-command echo "" "" ""' stdout="echo '' '' ''" - ble/test 'ble/util/print-quoted-command echo a{1..4}' stdout="echo 'a1' 'a2' 'a3' 'a4'" -) -( - ble/test 'ble/string#quote-word' ret= - ble/test 'ble/string#quote-word echo' ret='echo' - ble/test 'ble/string#quote-word "hello world"' ret="'hello world'" - ble/test 'ble/string#quote-word "'\''test'\''"' ret="\'test\'" - ble/test 'ble/string#quote-word "a'\''b'\''c"' ret="a\'b\'c" -) -( - ble/test 'ble/string#create-unicode-progress-bar 0 24 3' ret=' ' - ble/test 'ble/string#create-unicode-progress-bar 1 24 3' ret='▏ ' - ble/test 'ble/string#create-unicode-progress-bar 2 24 3' ret='▎ ' - ble/test 'ble/string#create-unicode-progress-bar 3 24 3' ret='▍ ' - ble/test 'ble/string#create-unicode-progress-bar 4 24 3' ret='▌ ' - ble/test 'ble/string#create-unicode-progress-bar 5 24 3' ret='▋ ' - ble/test 'ble/string#create-unicode-progress-bar 6 24 3' ret='▊ ' - ble/test 'ble/string#create-unicode-progress-bar 7 24 3' ret='▉ ' - ble/test 'ble/string#create-unicode-progress-bar 8 24 3' ret='█ ' - ble/test 'ble/string#create-unicode-progress-bar 9 24 3' ret='█▏ ' - ble/test 'ble/string#create-unicode-progress-bar 15 24 3' ret='█▉ ' - ble/test 'ble/string#create-unicode-progress-bar 16 24 3' ret='██ ' - ble/test 'ble/string#create-unicode-progress-bar 17 24 3' ret='██▏' - ble/test 'ble/string#create-unicode-progress-bar 24 24 3' ret='███' - ble/test 'ble/string#create-unicode-progress-bar 0 24 4 unlimited' ret=$'█ ' - ble/test 'ble/string#create-unicode-progress-bar 1 24 4 unlimited' ret=$'\e[7m▏\e[27m▏ ' - ble/test 'ble/string#create-unicode-progress-bar 2 24 4 unlimited' ret=$'\e[7m▎\e[27m▎ ' - ble/test 'ble/string#create-unicode-progress-bar 3 24 4 unlimited' ret=$'\e[7m▍\e[27m▍ ' - ble/test 'ble/string#create-unicode-progress-bar 4 24 4 unlimited' ret=$'\e[7m▌\e[27m▌ ' - ble/test 'ble/string#create-unicode-progress-bar 5 24 4 unlimited' ret=$'\e[7m▋\e[27m▋ ' - ble/test 'ble/string#create-unicode-progress-bar 6 24 4 unlimited' ret=$'\e[7m▊\e[27m▊ ' - ble/test 'ble/string#create-unicode-progress-bar 7 24 4 unlimited' ret=$'\e[7m▉\e[27m▉ ' - ble/test 'ble/string#create-unicode-progress-bar 8 24 4 unlimited' ret=$' █ ' - ble/test 'ble/string#create-unicode-progress-bar 9 24 4 unlimited' ret=$' \e[7m▏\e[27m▏ ' - ble/test 'ble/string#create-unicode-progress-bar 15 24 4 unlimited' ret=$' \e[7m▉\e[27m▉ ' - ble/test 'ble/string#create-unicode-progress-bar 16 24 4 unlimited' ret=$' █ ' - ble/test 'ble/string#create-unicode-progress-bar 17 24 4 unlimited' ret=$' \e[7m▏\e[27m▏' - ble/test 'ble/string#create-unicode-progress-bar 24 24 4 unlimited' ret=$'█ ' -) -( - ble/test 'ble/util/strlen' ret=0 - ble/test 'ble/util/strlen ""' ret=0 - ble/test 'ble/util/strlen a' ret=1 - ble/test 'ble/util/strlen abc' ret=3 - ble/test 'ble/util/strlen α' ret=2 - ble/test 'ble/util/strlen αβγ' ret=6 - ble/test 'ble/util/strlen あ' ret=3 - ble/test 'ble/util/strlen あいう' ret=9 - ble/test 'ble/util/strlen aα' ret=3 - ble/test 'ble/util/strlen aαあ' ret=6 - LC_ALL=en_US.utf8 - ble/test 'ble/util/strlen a' ret=1 - ble/test 'ble/util/strlen α' ret=2 - ble/test 'ble/util/strlen あ' ret=3 -) -( - ble/test 'ble/util/substr' ret= - ble/test 'ble/util/substr ""' ret= - ble/test 'ble/util/substr a' ret= - ble/test 'ble/util/substr "" 0' ret= - ble/test 'ble/util/substr "" 1' ret= - ble/test 'ble/util/substr a 0' ret= - ble/test 'ble/util/substr a 1' ret= - ble/test 'ble/util/substr a 2' ret= - ble/test 'ble/util/substr "" 0 0' ret= - ble/test 'ble/util/substr "" 0 1' ret= - ble/test 'ble/util/substr "" 1 1' ret= - ble/test 'ble/util/substr a 0 0' ret= - ble/test 'ble/util/substr a 1 0' ret= - ble/test 'ble/util/substr a 0 1' ret=a - ble/test 'ble/util/substr a 1 1' ret= - ble/test 'ble/util/substr abc 1 0' ret= - ble/test 'ble/util/substr abc 1 1' ret=b - ble/test 'ble/util/substr abc 1 2' ret=bc - ble/test 'ble/util/substr abc 0 0' ret= - ble/test 'ble/util/substr abc 0 1' ret=a - ble/test 'ble/util/substr abc 0 3' ret=abc - ble/test 'ble/util/substr abc 0 4' ret=abc - ble/test 'ble/util/substr abc 3 0' ret= - ble/test 'ble/util/substr abc 3 1' ret= - ble/test 'ble/util/substr abc 4 0' ret= - ble/test 'ble/util/substr abc 4 1' ret= - ble/test 'ble/util/substr あいう 0 3' ret=あ - ble/test 'ble/util/substr あいう 3 6' ret=いう - ble/test 'ble/util/substr あいう 0 1' ret=$'\xe3' - ble/test 'ble/util/substr あいう 1 2' ret=$'\x81\x82' - ble/test 'ble/util/substr あいう 1 4' ret=$'\x81\x82\xe3\x81' - ble/test 'ble/util/substr あいう 7 5' ret=$'\x81\x86' -) -( - for cmd in ble/path#{remove,remove-glob}; do - ble/test code:'ret=; '$cmd' ret' ret= - ble/test code:'ret=; '$cmd' ret ""' ret= - ble/test code:'ret=a; '$cmd' ret ""' ret=a - ble/test code:'ret=a; '$cmd' ret a' ret= - ble/test code:'ret=a; '$cmd' ret b' ret=a - ble/test code:'ret=a:a:a; '$cmd' ret a' ret= - ble/test code:'ret=aa; '$cmd' ret a' ret=aa - ble/test code:'ret=xyz:abc; '$cmd' ret ""' ret=xyz:abc - ble/test code:'ret=xyz:abc; '$cmd' ret xyz' ret=abc - ble/test code:'ret=xyz:abc; '$cmd' ret abc' ret=xyz - ble/test code:'ret=xyz:abc:tuv; '$cmd' ret xyz' ret=abc:tuv - ble/test code:'ret=xyz:abc:tuv; '$cmd' ret abc' ret=xyz:tuv - ble/test code:'ret=xyz:abc:tuv; '$cmd' ret tuv' ret=xyz:abc - ble/test code:'ret=xyz:xyz; '$cmd' ret xyz' ret= - ble/test code:'ret=xyz:abc:xyz; '$cmd' ret xyz' ret=abc - ble/test code:'ret=xyz:abc:xyz; '$cmd' ret abc' ret=xyz:xyz - ble/test code:'ret=xyz:xyz:xyz; '$cmd' ret xyz' ret= - done - ble/test code:'ret=a; ble/path#remove ret \?' ret=a - ble/test code:'ret=aa; ble/path#remove ret \?' ret=aa - ble/test code:'ret=a:b; ble/path#remove ret \?' ret=a:b - ble/test code:'ret=a:b:c; ble/path#remove ret \?' ret=a:b:c - ble/test code:'ret=aa:b:cc; ble/path#remove ret \?' ret=aa:b:cc - ble/test code:'ret=stdX:stdY:usrZ; ble/path#remove ret "std[a-zX-Z]"' ret=stdX:stdY:usrZ - ble/test code:'ret=stdX:usrZ:stdY; ble/path#remove ret "std[a-zX-Z]"' ret=stdX:usrZ:stdY - ble/test code:'ret=usrZ:stdX:stdY; ble/path#remove ret "std[a-zX-Z]"' ret=usrZ:stdX:stdY - ble/test code:'ret=a; ble/path#remove-glob ret \?' ret= - ble/test code:'ret=aa; ble/path#remove-glob ret \?' ret=aa - ble/test code:'ret=a:b; ble/path#remove-glob ret \?' ret= - ble/test code:'ret=a:b:c; ble/path#remove-glob ret \?' ret= - ble/test code:'ret=aa:b:cc; ble/path#remove-glob ret \?' ret=aa:cc - ble/test code:'ret=stdX:stdY:usrZ; ble/path#remove-glob ret "std[a-zX-Z]"' ret=usrZ - ble/test code:'ret=stdX:usrZ:stdY; ble/path#remove-glob ret "std[a-zX-Z]"' ret=usrZ - ble/test code:'ret=usrZ:stdX:stdY; ble/path#remove-glob ret "std[a-zX-Z]"' ret=usrZ -) -( - ble/test code:'ret=; ble/path#append ret a' ret=a - ble/test code:'ret=a; ble/path#append ret a' ret=a:a - ble/test code:'ret=a; ble/path#append ret b' ret=a:b - ble/test code:'ret=a:b; ble/path#append ret cd' ret=a:b:cd - ble/test code:'ret=; ble/path#prepend ret a' ret=a - ble/test code:'ret=a; ble/path#prepend ret a' ret=a:a - ble/test code:'ret=a; ble/path#prepend ret b' ret=b:a - ble/test code:'ret=a:b; ble/path#prepend ret cd' ret=cd:a:b - ble/test code:'ret=a:b:c; ble/path#contains ret a' - ble/test code:'ret=a:b:c; ble/path#contains ret b' - ble/test code:'ret=a:b:c; ble/path#contains ret c' - ble/test code:'ret=a:b:c; ! ble/path#contains ret x' - ble/test code:'ret=a:b:c; ! ble/path#contains ret aa' - ble/test code:'ret=a:b:c; ! ble/path#contains ret bb' - ble/test code:'ret=a:b:c; ! ble/path#contains ret cc' - ble/test code:'ret=a:b:c; ! ble/path#contains ret "?"' - ble/test code:'ret=a:b:c; ! ble/path#contains ret "*"' - ble/test code:'ret=abc:def; ble/path#contains ret abc' - ble/test code:'ret=abc:def; ble/path#contains ret def' - ble/test code:'ret=abc:def; ! ble/path#contains ret a' - ble/test code:'ret=abc:def; ! ble/path#contains ret ab' - ble/test code:'ret=abc:def; ! ble/path#contains ret abcdef' - ble/test code:'ret=abc:def; ! ble/path#contains ret "???"' - ble/test code:'ret=xyz; ble/path#contains ret xyz' - ble/test code:'ret=xyz; ! ble/path#contains ret xyz:xyz' - ble/test code:'ret=xyz; ! ble/path#contains ret "???"' -) -( - builtin eval -- "${_ble_util_dict_declare//NAME/dict1}" - builtin eval -- "${_ble_util_gdict_declare//NAME/dict2}" - builtin eval -- "${_ble_util_adict_declare//NAME/dict3}" - index=1 - for Dict in ble/{,g,a}dict; do - dict=dict$((index++)) - ret=unchanged - ble/test '! '$Dict'#has '$dict' banana' ret=unchanged - ble/test '! '$Dict'#has '$dict' ""' ret=unchanged - $Dict#set $dict apple red - $Dict#set $dict banana yellow - $Dict#set $dict orange orange - $Dict#set $dict melon green - ret=unchanged - ble/test $Dict'#has '$dict' banana' ret=unchanged # 先頭 - ble/test $Dict'#has '$dict' apple' ret=unchanged # 中 - ble/test $Dict'#has '$dict' melon' ret=unchanged # 末尾 - ble/test '! '$Dict'#has '$dict' pear' ret=unchanged # 存在しない項目 - ble/test $Dict'#get '$dict' banana' ret=yellow # 先頭 - ble/test $Dict'#get '$dict' apple' ret=red # 中 - ble/test $Dict'#get '$dict' melon' ret=green # 末尾 - ble/test '! '$Dict'#get '$dict' pear' ret= # 存在しない項目 - ble/test '! '$Dict'#has '$dict' ""' # 末尾空要素で引けるか - ble/test '! '$Dict'#get '$dict' ""' # 末尾空要素で引けるか - $Dict#set $dict '' transparent - ble/test $Dict'#has '$dict' ""' # 末尾空要素で引けるか - ble/test $Dict'#get '$dict' ""' ret=transparent # 末尾空要素で引けるか - $Dict#set $dict 'alpha beta' pink - ble/test $Dict'#has '$dict' ""' # 中央空要素で引けるか - ble/test $Dict'#has '$dict' "alpha beta"' # 空白を含む見出し - ble/test $Dict'#get '$dict' ""' ret=transparent # 中央空要素で引けるか - ble/test $Dict'#get '$dict' "alpha beta"' ret=pink # 空白を含む見出し - $Dict#set $dict ' apple ' ' red ' - ble/test $Dict'#has '$dict' " apple "' # 空白で trim されないか - ble/test $Dict'#has '$dict' apple' # 既存項目を破壊していないか - ble/test $Dict'#get '$dict' " apple "' ret=' red ' # 空白で trim されないか - ble/test $Dict'#get '$dict' apple' ret=red # 既存項目を破壊していないか - ble/test '! '$Dict'#has '$dict' "${_ble_term_FS}"' # 単一FS - ble/test '! '$Dict'#has '$dict' ":"' # 単一コロン - ble/test '! '$Dict'#has '$dict' "apple${_ble_term_FS}banana"' # FSを含む見出し - ble/test '! '$Dict'#has '$dict' apple:banana' # コロンを含む見出し - ble/test '! '$Dict'#get '$dict' "${_ble_term_FS}"' ret= # 単一FS - ble/test '! '$Dict'#get '$dict' ":"' ret= # 単一コロン - ble/test '! '$Dict'#get '$dict' "apple${_ble_term_FS}banana"' ret= # FSを含む見出し - ble/test '! '$Dict'#get '$dict' apple:banana' ret= # コロンを含む見出し - $Dict#set $dict "${_ble_term_FS}" Empty - $Dict#set $dict ":" Colon - $Dict#set $dict "apple${_ble_term_FS}banana" RedYellow - $Dict#set $dict "apple:banana" __red_yellow__ - ble/test $Dict'#has '$dict' "${_ble_term_FS}"' # 単一FS - ble/test $Dict'#has '$dict' ":"' # 単一コロン - ble/test $Dict'#has '$dict' "apple${_ble_term_FS}banana"' # FSを含む見出し - ble/test $Dict'#has '$dict' apple:banana' # コロンを含む見出し - ble/test $Dict'#get '$dict' "${_ble_term_FS}"' ret=Empty # 単一FS - ble/test $Dict'#get '$dict' ":"' ret=Colon # 単一コロン - ble/test $Dict'#get '$dict' "apple${_ble_term_FS}banana"' ret=RedYellow # FSを含む見出し - ble/test $Dict'#get '$dict' apple:banana' ret=__red_yellow__ # コロンを含む見出し - $Dict#unset $dict banana - $Dict#unset $dict apple - $Dict#unset $dict melon - ble/test '! '$Dict'#has '$dict' banana' - ble/test '! '$Dict'#has '$dict' apple' - ble/test '! '$Dict'#has '$dict' melon' - $Dict#unset $dict "" - $Dict#unset $dict "alpha beta" - $Dict#unset $dict " apple " - ble/test '! '$Dict'#has '$dict' ""' # 中央空要素で引けるか - ble/test '! '$Dict'#has '$dict' "alpha beta"' # 空白を含む見出し - ble/test '! '$Dict'#has '$dict' " apple "' # 空白で trim されないか - $Dict#unset $dict "${_ble_term_FS}" - $Dict#unset $dict ":" - $Dict#unset $dict "apple${_ble_term_FS}banana" - $Dict#unset $dict apple:banana - ble/test '! '$Dict'#has '$dict' "${_ble_term_FS}"' # 単一FS - ble/test '! '$Dict'#has '$dict' ":"' # 単一コロン - ble/test '! '$Dict'#has '$dict' "apple${_ble_term_FS}banana"' # FSを含む見出し - ble/test '! '$Dict'#has '$dict' apple:banana' # コロンを含む見出し - done -) -( - blehook/declare FOO - ble/test 'blehook --color=never FOO' stdout='blehook FOO=' - ble/test 'blehook/has-hook FOO' exit=1 - blehook FOO+='echo hello' - ble/test 'blehook --color=never FOO' \ - stdout="blehook FOO+='echo hello'" - ble/test 'blehook/has-hook FOO' - blehook FOO+='echo world' - ble/test 'blehook --color=never FOO' \ - stdout="blehook FOO+='echo hello'" \ - stdout="blehook FOO+='echo world'" - ble/test 'blehook/has-hook FOO' - blehook FOO-='echo hello' - ble/test 'blehook --color=never FOO' \ - stdout="blehook FOO+='echo world'" - ble/test 'blehook/has-hook FOO' - blehook FOO-='echo world' - ble/test 'blehook --color=never FOO' \ - stdout='blehook FOO=' - ble/test 'blehook/has-hook FOO' exit=1 - blehook FOO+='echo hello' - blehook FOO+='echo world' - blehook FOO='echo empty' - ble/test 'blehook --color=never FOO' \ - stdout="blehook FOO+='echo empty'" - ble/test 'blehook/has-hook FOO' - blehook FOO+='echo hello' - blehook FOO+='echo world' - blehook FOO= - ble/test 'blehook --color=never FOO' \ - stdout='blehook FOO=' - ble/test 'blehook/has-hook FOO' exit=1 - blehook FOO+='echo hello' - blehook FOO+='echo world' - blehook FOO!='echo hello' - ble/test 'blehook --color=never FOO' \ - stdout="blehook FOO+='echo hello'${_ble_term_nl}blehook FOO+='echo world'" - blehook FOO-+='echo hello' - ble/test 'blehook --color=never FOO' \ - stdout="blehook FOO+='echo world'${_ble_term_nl}blehook FOO+='echo hello'" - blehook FOO+-='echo hello' - ble/test 'blehook --color=never FOO' \ - stdout="blehook FOO+='echo hello'${_ble_term_nl}blehook FOO+='echo world'" - blehook FOO= - blehook FOO+='echo hello' - blehook FOO+='echo empty' - blehook FOO+='echo world' - ble/test 'blehook/invoke FOO' \ - stdout=hello \ - stdout=empty \ - stdout=world - blehook FOO='echo A$?' - blehook FOO+='echo B$?' - blehook FOO+='echo C$?' - ble/test 'ble/util/setexit 123; blehook/invoke FOO' \ - stdout=A123 \ - stdout=B123 \ - stdout=C123 - blehook/declare bar_load - blehook bar_load='echo bar_load' - ble/test 'blehook/eval-after-load bar "echo yes"' stdout= - ble/test 'blehook/invoke bar_load' \ - stdout=bar_load \ - stdout=yes - ble/test 'blehook/eval-after-load bar "echo next"' stdout=next - function func { ret="[$1]"; } - blehook FOO=func - ble/test 'blehook/invoke FOO xQAHbcpMFyFyQ' ret='[xQAHbcpMFyFyQ]' -) -( - ble/builtin/trap 'echo TRAPEXIT1' 0 - ble/test 'ble/builtin/trap/invoke 0' stdout=TRAPEXIT1 - ble/test 'ble/builtin/trap/invoke EXIT' stdout=TRAPEXIT1 - ble/builtin/trap 0 - ble/test 'ble/builtin/trap/invoke 0' stdout= - ble/builtin/trap 'echo TRAPEXIT2' EXIT - ble/test 'ble/builtin/trap/invoke 0' stdout=TRAPEXIT2 - ble/test 'ble/builtin/trap/invoke EXIT' stdout=TRAPEXIT2 - ble/builtin/trap EXIT - ble/test 'ble/builtin/trap/invoke 0' stdout= - ble/builtin/trap 'echo TRAPHUP1' 1 - ble/test 'ble/builtin/trap/invoke 1' stdout=TRAPHUP1 - ble/test 'ble/builtin/trap/invoke HUP' stdout=TRAPHUP1 - ble/test 'ble/builtin/trap/invoke SIGHUP' stdout=TRAPHUP1 - ble/builtin/trap 1 - ble/test 'ble/builtin/trap/invoke 1' stdout= - ble/builtin/trap 'echo TRAPHUP2' HUP - ble/test 'ble/builtin/trap/invoke 1' stdout=TRAPHUP2 - ble/test 'ble/builtin/trap/invoke HUP' stdout=TRAPHUP2 - ble/test 'ble/builtin/trap/invoke SIGHUP' stdout=TRAPHUP2 - ble/builtin/trap HUP - ble/test 'ble/builtin/trap/invoke HUP' stdout= - ble/builtin/trap 'echo TRAPHUP3' SIGHUP - ble/test 'ble/builtin/trap/invoke 1' stdout=TRAPHUP3 - ble/test 'ble/builtin/trap/invoke HUP' stdout=TRAPHUP3 - ble/test 'ble/builtin/trap/invoke SIGHUP' stdout=TRAPHUP3 - ble/builtin/trap SIGHUP - ble/test 'ble/builtin/trap/invoke HUP' stdout= - ble/builtin/trap/.register 9999 CUSTOM - ble/builtin/trap/reserve CUSTOM - ble/builtin/trap 'echo custom trap' CUSTOM - ble/test 'ble/builtin/trap/invoke CUSTOM' stdout='custom trap' - function ble/builtin/trap:CUSTOM { echo "__set_handler__ ($2) $1"; } - ble/test 'ble/builtin/trap "echo hello world" CUSTOM' \ - stdout='__set_handler__ (CUSTOM) echo hello world' - ble/test 'ble/builtin/trap/invoke CUSTOM' stdout='hello world' -) -( - ble/test 'ble/util/readfile ret <(echo hello)' \ - ret=hello$'\n' - ble/test 'ble/util/readfile ret <(echo hello; echo world)' \ - ret=hello$'\n'world$'\n' - ble/test 'ble/util/readfile ret <(echo hello; echo -n world)' \ - ret=hello$'\n'world - ble/test 'ble/util/readfile ret <(:)' ret= - function status { echo "${#a[*]}:(""${a[*]}"")"; } - ble/test "ble/util/mapfile a < <(echo hello); status" stdout='1:(hello)' - ble/test "ble/util/mapfile a < <(echo -n hello); status" stdout='1:(hello)' - ble/test "ble/util/mapfile a < <(echo hello; echo world); status" stdout='2:(hello world)' - ble/test "ble/util/mapfile a < <(echo hello; echo -n world); status" stdout='2:(hello world)' - ble/test "ble/util/mapfile a < <(printf '%s\n' h1 h2 h3 h4); status" stdout='4:(h1 h2 h3 h4)' - ble/test "ble/util/mapfile a < <(:); status" stdout='0:()' - ble/test "ble/util/mapfile a < <(echo); status" stdout='1:()' - ble/test "ble/util/mapfile a < <(echo;echo); status" stdout='2:( )' - ble/test "ble/util/mapfile a < <(echo a;echo;echo b); status" stdout='3:(a b)' - nl=$'\n' - ble/test 'ble/util/assign ret ""' ret= - ble/test 'ble/util/assign ret ":"' ret= - ble/test 'ble/util/assign ret "echo"' ret= - ble/test 'ble/util/assign ret "echo hello"' ret=hello - ble/test 'ble/util/assign ret "seq 5"' ret="1${nl}2${nl}3${nl}4${nl}5" - function f1 { echo stdout; echo stderr >&2; } - function nested-assign { - ble/util/assign err 'ble/util/assign out f1 2>&1' - echo "out=$out err=$err" - } - ble/test nested-assign stdout='out=stdout err=stderr' - ble/test 'ble/util/assign-array a :; status' stdout='0:()' - ble/test 'ble/util/assign-array a echo; status' stdout='1:()' - ble/test 'ble/util/assign-array a "echo hello"; status' stdout='1:(hello)' - ble/test 'ble/util/assign-array a "seq 5"; status' stdout='5:(1 2 3 4 5)' - ble/test 'ble/util/assign-array a "echo; echo; echo"; status' stdout='3:( )' - ble/test 'ble/util/assign-array a "echo 1; echo; echo 2"; status' stdout='3:(1 2)' -) -( - x=($'\177' $'\1' $'\2' $'\32' ' ' $'\a' $'\b' $'\t' $'\n' $'\v' $'\f' $'\r' a \" \' \$ \! \` \~) - x[0]=$'\177' - x[1]=$'\1' - ble/test "ble/util/writearray -d '' x | sha256sum | awk '{print \$1}'" stdout=$(printf '%s\0' "${x[@]}" | sha256sum | awk '{print $1}') -) -( - var=variable - alias ali=fun - function fun { echo yes "$*"; } - function ble/fun { echo yes "$*"; return 99; } - function ble/fun:type { echo yes "$*"; return 100; } - function ble/fun#meth { echo yes "$*"; return 101; } - ble/test 'ble/is-function' exit=1 - ble/test 'ble/is-function ""' exit=1 - ble/test 'ble/is-function fun' - ble/test 'ble/is-function ble/fun' - ble/test 'ble/is-function ble/fun:type' - ble/test 'ble/is-function ble/fun#meth' - ble/test 'ble/is-function fun1' exit=1 - ble/test 'ble/is-function ble/fun1' exit=1 - ble/test 'ble/is-function ble/fun1:type' exit=1 - ble/test 'ble/is-function ble/fun1#meth' exit=1 - ble/test 'ble/is-function ali' exit=1 - ble/test 'ble/is-function var' exit=1 - ble/test 'ble/is-function compgen' exit=1 - ble/test 'ble/is-function declare' exit=1 - ble/test 'ble/is-function mkfifo' exit=1 - function compgen { :; } - function declare { :; } - function mkfifo { :; } - ble/test 'ble/is-function compgen' - ble/test 'ble/is-function declare' - ble/test 'ble/is-function mkfifo' - ble/test 'ble/function#try fun 1 2 3' stdout='yes 1 2 3' - ble/test 'ble/function#try ble/fun 1 2 3' stdout='yes 1 2 3' exit=99 - ble/test 'ble/function#try ble/fun:type 1 2 3' stdout='yes 1 2 3' exit=100 - ble/test 'ble/function#try ble/fun#meth 1 2 3' stdout='yes 1 2 3' exit=101 - ble/test 'ble/function#try fun1 1 2 3' stdout= exit=127 - ble/test 'ble/function#try ble/fun1 1 2 3' stdout= exit=127 - ble/test 'ble/function#try ble/fun1:type 1 2 3' stdout= exit=127 - ble/test 'ble/function#try ble/fun1#meth 1 2 3' stdout= exit=127 -) -( - function f1 { echo original $*; } - ble/test f1 stdout='original' - ble/function#advice before f1 'echo pre' - ble/test f1 stdout={pre,original} - ble/function#advice after f1 'echo post' - ble/test f1 stdout={pre,original,post} - ble/function#advice before f1 'echo A' - ble/test f1 stdout={A,original,post} - ble/function#advice after f1 'echo B' - ble/test f1 stdout={A,original,B} - ble/function#advice around f1 'echo [; ble/function#advice/do; echo ]' - ble/test f1 stdout={A,[,original,],B} - ble/function#advice around f1 ' - ADVICE_WORDS[1]=quick - echo [; ble/function#advice/do; echo ] - ADVICE_EXIT=99' - ble/test f1 stdout={A,[,'original quick',],B} exit=99 - ble/function#advice remove f1 - ble/test f1 stdout='original' exit=0 - ble/test 'f1 1' stdout='original 1' exit=0 -) -( - ble/test 'echo 1 2 3' stdout='1 2 3' - ble/test 'ble/is-function echo' exit=1 - ble/function#push echo 'builtin echo "[$*]"' - ble/test 'ble/is-function echo' - ble/test 'echo 1 2 3' stdout='[1 2 3]' - ble/function#push echo 'builtin echo "($*)"' - ble/test 'echo 1 2 3' stdout='(1 2 3)' - ble/function#push echo 'builtin echo A; ble/function#push/call-top "$@"; builtin echo Z' - ble/test 'echo 1 2 3' stdout={A,'(1 2 3)',Z} - ble/function#push echo 'builtin echo [; ble/function#push/call-top "$@"; builtin echo ]' - ble/test 'echo 1 2 3' stdout={[,A,'(1 2 3)',Z,]} - ble/test 'ble/function#pop echo' - ble/test 'echo 1 2 3' stdout={A,'(1 2 3)',Z} - ble/function#pop echo - ble/test 'echo 1 2 3' stdout='(1 2 3)' - ble/function#pop echo - ble/test 'echo 1 2 3' stdout='[1 2 3]' - ble/test 'ble/is-function echo' - ble/test 'ble/function#pop echo' - ble/test 'ble/is-function echo' exit=1 - ble/test 'echo 1 2 3' stdout='1 2 3' - ble/test 'ble/function#pop echo' exit=1 - ble/test 'echo 1 2 3' stdout='1 2 3' -) -( - ble/test 'ble/util/set ret hello' ret='hello' - ble/test 'ble/util/set ret "hello world"' ret='hello world' - ble/test 'ble/util/set ret ""' ret='' - ble/test 'ble/util/set ret " "' ret=' ' - ble/test 'ble/util/set ret " a"' ret=' a' - ble/test 'ble/util/set ret "a "' ret='a ' - ble/test 'ble/util/set ret $'\''\n'\''' ret=$'\n' - ble/test 'ble/util/set ret A$'\''\n'\''' ret=A$'\n' - ble/test 'ble/util/set ret A$'\''\n'\''B' ret=A$'\n'B -) -( - ble/test 'ble/util/sprintf ret "[%s]" 1 2 3' ret='[1][2][3]' - ble/test 'ble/util/sprintf ret "[%5s]" 1' ret='[ 1]' - ble/test 'ble/util/sprintf ret "[%.2s]" 12345' ret='[12]' - ble/test 'ble/util/sprintf ret "[%d,%d]" 1 3' ret='[1,3]' - ble/test 'ble/util/sprintf ret "[%x]" 27' ret='[1b]' - ble/test 'ble/util/sprintf ret "[%#.2g]" 27' ret='[27.]' - ble/test 'ble/util/sprintf ret "[%#.2f]" 27' ret='[27.00]' -) -( - shopt -s expand_aliases - alias aaa=fun - function fun { :; } - function ble/fun { :; } - function ble/fun:type { :; } - function ble/fun#meth { :; } - ble/test 'ble/util/type ret aaa' ret=alias - ble/test 'ble/util/type ret fun' ret=function - ble/test 'ble/util/type ret alias' ret=builtin - ble/test 'ble/util/type ret mkfifo' ret=file - ble/test 'ble/util/type ret for' ret=keyword - ble/test 'ble/util/type ret ble/fun' ret=function - ble/test 'ble/util/type ret ble/fun:type' ret=function - ble/test 'ble/util/type ret ble/fun#meth' ret=function - ble/test 'ble/util/type ret fun1' ret= - ble/test 'ble/util/type ret ble/fun1' ret= - ble/test 'ble/util/type ret ble/fun1:type' ret= - ble/test 'ble/util/type ret ble/fun1#meth' ret= -) -( - shopt -s expand_aliases - alias aaa1='aaa2 world' - ble/test 'ble/alias#expand aaa1' ret='aaa2 world' - alias aaa2='aaa3 hello' - ble/test 'ble/alias#expand aaa2' ret='aaa3 hello' - ble/test 'ble/alias#expand aaa1' ret='aaa2 world' - alias aaa3='aaa4' - ble/test 'ble/alias#expand aaa3' ret='aaa4' - ble/test 'ble/alias#expand aaa2' ret='aaa3 hello' - ble/test 'ble/alias#expand aaa1' ret='aaa2 world' - alias aaa4='echo' - ble/test 'ble/alias#expand aaa4' ret='echo' - ble/test 'ble/alias#expand aaa3' ret='aaa4' - ble/test 'ble/alias#expand aaa2' ret='aaa3 hello' - ble/test 'ble/alias#expand aaa1' ret='aaa2 world' -) -if ((_ble_bash>=40000)); then - ( - ble/test 'echo 1 | { sleep 0.01; ble/util/is-stdin-ready; }' - ble/test 'sleep 0.01 | ble/util/is-stdin-ready' exit=1 - ble/test 'ble/util/is-stdin-ready <<< a' - ble/test 'ble/util/is-stdin-ready <<< ""' - ble/test ': | { sleep 0.01; ble/util/is-stdin-ready; }' - ble/test 'ble/util/is-stdin-ready < /dev/null' - ) -fi -ble/test ble/util/is-running-in-subshell exit=1 -( ble/test ble/util/is-running-in-subshell ) -( - ble/test/chdir - function getpid { - sh -c 'echo -n $PPID' >| a.txt - ble/util/readfile ppid a.txt - } - dummy=modification_to_environment.1 - ble/util/getpid - ble/test '[[ $BASHPID != $$ ]]' - getpid - ble/test code:'ret=$BASHPID' ret="$ppid" - pid1=$BASHPID - ( - dummy=modification_to_environment.2 - ble/util/getpid - ble/test '[[ $BASHPID != $$ && $BASHPID != $pid1 ]]' - getpid - ble/test '[[ $BASHPID == $ppid ]]' - ) - ble/test/rmdir -) -( - ble/test 'ble/fd#is-open 1' - ble/test 'ble/fd#is-open 2' - exec 9>&- - ble/test 'ble/fd#is-open 9' exit=1 - exec 9>/dev/null - ble/test 'ble/fd#is-open 9' - exec 9>&- - ble/test 'ble/fd#is-open 9' exit=1 -) -( - ble/test/chdir - ble/fd#alloc fd '> a.txt' - echo hello >&$fd - echo world >&$fd - if ((_ble_bash/100!=301)); then - ble/test 'ble/fd#close fd; echo test >&$fd' exit=1 - ble/test 'cat a.txt' stdout={hello,world} - fi - ble/test/rmdir -) -( - xv1='' - xv2a='a' xv2b='ab' - xv3a=' ' xv3b='a b' - xv4a=$'\n' xv4b=$'a\nb' - xv5a=$'\r' xv5b=$'a\rb' - xv6a=$'\x01' xv6b=a$'\x01'b - xv7a=$'\x02' xv7b=a$'\x02'b - xv8a=$'\x7F' xv8b=a$'\x7F'b - eval -- "$( - for name in v1 v{2..8}{a,b}; do - eval "$name=\$x$name" - done - ble/util/declare-print-definitions vn v1 v{2..8}{a,b} 2>/dev/null)" - ble/test '[[ ! ${vn+set} ]]' - for name in v1 v{2..8}{a,b}; do - ble/test "declare -p $name x$name | cat -A >&2; [[ \$$name == \$x$name ]]" - done - function status { eval 'ret="${#'$1'[*]}:(""${'$1'[*]}"")"'; } - xa0=() sa0='0:()' - xa1=('') sa1='1:()' - for k in {2..8}; do - eval "xa$k=(); xa$k[0]=\"\$xv${k}a\"; xa$k[1]=\"\$xv${k}b\"" - eval "sa$k=\"2:(\$xv${k}a \$xv${k}b)\"" - done - eval -- "$( - for name in a0 a1 a{2..8}; do - eval "$name=(\"\${x$name[@]}\")" - done - ble/util/declare-print-definitions a0 a1 a{2..8} 2>/dev/null)" - for name in a0 a1 a{2..8}; do - stdout_var=s$name - ble/test "status $name" ret="${!stdout_var}" - done -) -( - function status { builtin eval 'echo "${#'$1'[*]}:(""${'$1'[*]}"")"'; } - v1=123 v2=(1 2 3) v3=bbb v4=ccc - function f2 { - local v3=x v4=y - builtin eval -- "$(ble/util/print-global-definitions v{0..4})" - ble/test '[[ ! ${v0+set} ]]' - ble/test 'status v1' stdout='1:(123)' - ble/test 'status v2' stdout='3:(1 2 3)' - ble/test 'status v3' stdout='1:(bbb)' - ble/test 'status v4' stdout='1:(ccc)' - } - function f1 { - local v0=1 v1=2 v2=3 v4=5 - f2 - ble/test 'status v1' stdout='1:(2)' - ble/test 'status v2' stdout='1:(3)' - } - f1 - value="hello 'world'" - ble/test 'ble/util/print-global-definitions value' stdout="declare value='hello '\''world'\'''" -) -( - ble/test 'ble/util/has-glob-pattern "a*"' - ble/test 'ble/util/has-glob-pattern "a*b"' - ble/test 'ble/util/has-glob-pattern "?"' - ble/test 'ble/util/has-glob-pattern "a?"' - ble/test 'ble/util/has-glob-pattern "a?b"' - ble/test 'ble/util/has-glob-pattern "a?b*c"' - ble/test 'ble/util/has-glob-pattern "a[a-c]d"' - ble/test 'ble/util/has-glob-pattern "a[!a-c]d"' - ble/test 'ble/util/has-glob-pattern "*.txt"' - ble/test 'ble/util/has-glob-pattern "*.*"' - ble/test 'ble/util/has-glob-pattern ""' exit=1 - ble/test 'ble/util/has-glob-pattern "a"' exit=1 - ble/test 'ble/util/has-glob-pattern "abc"' exit=1 - ble/test 'ble/util/has-glob-pattern "/"' exit=1 - ble/test 'ble/util/has-glob-pattern "a/c"' exit=1 - ble/test 'ble/util/has-glob-pattern "a:b"' exit=1 - ble/test 'ble/util/has-glob-pattern "a=b"' exit=1 - ble/test 'ble/util/has-glob-pattern "\[xyz\]"' exit=1 -) -ble/util/msleep/.calibrate-loop &>/dev/null -ble/util/msleep/.calibrate-loop &>/dev/null -ble/util/msleep/.calibrate-loop &>/dev/null -( - ble/test 'ble-measure -q "ble/util/msleep 100"; echo "$ret usec" >&2; ((msec=ret/1000,90<=msec&&msec<=110))' - ble/test 'ble-measure -q "ble/util/sleep 0.1"; echo "$ret usec" >&2; ((msec=ret/1000,90<=msec&&msec<=110))' -) -( - time=0 - ble/function#push ble/util/msleep '((time+=$1));echo $time' - ble/test "ble/util/conditional-sync 'sleep 10' '((time<1000))' 100" \ - stdout={1..10}00 - ble/test "ble/util/conditional-sync 'sleep 10' '((time<1000))' 100 progressive-weight" \ - stdout={1,3,7,15,31,63,{1..10}27} - ble/function#pop ble/util/msleep -) -( - ble/test ":| ble/util/cat | cat -A" stdout= - ble/test "printf a | ble/util/cat | cat -A" stdout=a - ble/test "printf '\0' | ble/util/cat | cat -A" stdout=^@ - ble/test "printf 'hello\nworld\n'| ble/util/cat | cat -A" stdout={hello\$,world\$} - ble/test "printf 'hello\nworld'| ble/util/cat | cat -A" stdout={hello\$,world} - ble/test "printf 'hello\0world\0'| ble/util/cat | cat -A" stdout=hello^@world^@ - ble/test "printf 'hello\0world'| ble/util/cat | cat -A" stdout=hello^@world -) -( - bleopt_pager=xxx PAGER=yyy - ble/test 'ble/util/get-pager ret' ret=xxx - bleopt_pager=xxx PAGER= - ble/test 'ble/util/get-pager ret' ret=xxx - bleopt_pager= PAGER=yyy - ble/test 'ble/util/get-pager ret' ret=yyy - bleopt_pager= PAGER= - ble/test 'ble/util/get-pager ret' ret=less -) -( - bleopt_pager=cat - ble/test 'ble/util/pager <<< hello' stdout=hello -) -( - ble/util/buffer.clear - ble/test 'ble/util/buffer.flush' stdout= - ble/util/buffer hello - ble/util/buffer world - ble/test 'ble/util/buffer.flush' stdout=helloworld - ble/test 'ble/util/buffer.flush' stdout= - ble/util/buffer.print hello - ble/util/buffer.print world - ble/test 'ble/util/buffer.flush' stdout={hello,world} - ble/test 'ble/util/buffer.flush' stdout= - ble/util/buffer.print hello - ble/util/buffer.print world - ble/util/buffer.clear - ble/test 'ble/util/buffer.flush' stdout= -) -( - ubeg=3 uend=10 uend0=5 - beg=0 end=5 end0=3 - ble/dirty-range#load --prefix=u - ble/test 'echo "$beg:$end:$end0"' stdout=3:10:5 - ubeg=3 uend=10 uend0=5 - ble/dirty-range#clear --prefix=u - ble/test 'echo "$ubeg:$uend:$uend0"' stdout=-1:-1:-1 - ble/dirty-range#update --prefix=u 0 5 2 - ble/test 'echo "$ubeg:$uend:$uend0"' stdout=0:5:2 - ble/dirty-range#update --prefix=u 10 10 12 - ble/test 'echo "$ubeg:$uend:$uend0"' stdout=0:10:9 - ble/dirty-range#clear --prefix=u - ble/dirty-range#update --prefix=u 2 2 3 - ble/dirty-range#update --prefix=u 2 2 3 - ble/test 'echo "$ubeg:$uend:$uend0"' stdout=2:2:4 - ble/dirty-range#clear --prefix=u - ble/dirty-range#update --prefix=u 1 5 3 - ble/dirty-range#update --prefix=u 7 11 9 - ble/test 'echo "$ubeg:$uend:$uend0"' stdout=1:11:7 - ble/dirty-range#clear --prefix=u - ble/dirty-range#update --prefix=u 1 7 5 - ble/dirty-range#update --prefix=u 4 15 11 - ble/test 'echo "$ubeg:$uend:$uend0"' stdout=1:15:9 - ble/dirty-range#clear --prefix=u - ble/dirty-range#update --prefix=u 1 7 5 - ble/dirty-range#update --prefix=u 3 4 5 - ble/test 'echo "$ubeg:$uend:$uend0"' stdout=1:6:5 - ble/dirty-range#clear --prefix=u - ble/dirty-range#update --prefix=u 4 8 6 - ble/dirty-range#update --prefix=u 2 8 10 - ble/test 'echo "$ubeg:$uend:$uend0"' stdout=2:8:8 - ble/dirty-range#clear --prefix=u - ble/dirty-range#update --prefix=u 6 12 8 - ble/dirty-range#update --prefix=u 3 7 8 - ble/test 'echo "$ubeg:$uend:$uend0"' stdout=3:11:8 - ble/dirty-range#clear --prefix=u - ble/dirty-range#update --prefix=u 10 13 11 - ble/dirty-range#update --prefix=u 3 7 8 - ble/test 'echo "$ubeg:$uend:$uend0"' stdout=3:12:11 -) -( - ble/test $'ble/util/s2c "\n"' ret=10 - ble/test 'ble/util/c2s 10' ret=$'\n' - ble/test $'ble/util/s2c "\x1b"' ret=27 - ble/test 'ble/util/c2s 27' ret=$'\x1b' - ble/test $'ble/util/s2c "\x1F"' ret=31 - ble/test 'ble/util/c2s 31' ret=$'\x1F' - c=$'\x7F' ble/test 'ble/util/s2c $c' ret=127 # bash-3.0 bug WA - ble/test 'ble/util/c2s 127' ret=$'\x7F' - ble/test 'ble/util/s2c " "' ret=32 - ble/test 'ble/util/c2s 32' ret=' ' - ble/test 'ble/util/s2c a' ret=97 - ble/test 'ble/util/c2s 97' ret=a - ble/test 'ble/util/s2c μ' ret=956 - ble/test 'ble/util/c2s 956' ret=μ - ble/test 'ble/util/s2c あ' ret=12354 - ble/test 'ble/util/c2s 12354' ret=あ - ble/test 'ble/util/s2c' ret=0 - ble/test 'ble/util/s2c abc' ret=97 - ble/test 'ble/util/s2c μν' ret=956 - ble/test 'ble/util/s2c あいう' ret=12354 - ble/test 'ble/util/c2s.cached 32' ret=' ' - ble/test 'ble/util/c2s.cached 97' ret=a - ble/test 'ble/util/c2s.cached 956' ret=μ - ble/test 'ble/util/c2s.cached 12354' ret=あ - LANG=C - ble/test 'ble/util/c2s 97' ret=a - ble/test 'ble/util/c2s 956; [[ $ret != μ ]]' - ble/test 'ble/util/c2s 12354; [[ $ret != あ ]]' -) -( - ble/test 'ble/util/c2bc 97' ret=1 - ble/test 'ble/util/c2bc 956' ret=2 - ble/test 'ble/util/c2bc 12354' ret=3 - ble/test 'ble/util/c2bc 0' ret=1 - ble/test 'ble/util/c2bc 127' ret=1 - ble/test 'ble/util/c2bc 128' ret=2 - ble/test 'ble/util/c2bc 2047' ret=2 - ble/test 'ble/util/c2bc 2048' ret=3 - ble/test 'ble/util/c2bc 65535' ret=3 - ble/test 'ble/util/c2bc 65536' ret=4 -) -( - ble/test 'ble/util/s2chars AaBbCc; ret="${ret[*]}"' ret='65 97 66 98 67 99' - ble/test 'ble/util/chars2s 65 97 66 98 67 99' ret=AaBbCc - ble/test 'ble/util/s2chars あいう; ret="${ret[*]}"' ret='12354 12356 12358' - ble/test 'ble/util/chars2s 12354 12356 12358' ret=あいう - ble/test 'ble/util/s2chars; ret="${ret[*]}"' ret= - ble/test 'ble/util/s2chars 0; ret="${ret[*]}"' ret=48 - ble/test 'ble/util/s2chars a; ret="${ret[*]}"' ret=97 - ble/test 'ble/util/s2chars μ; ret="${ret[*]}"' ret=956 - ble/test 'ble/util/s2chars あ; ret="${ret[*]}"' ret=12354 - ble/test 'ble/util/chars2s' ret= - ble/test 'ble/util/chars2s 48' ret=0 - ble/test 'ble/util/chars2s 97' ret=a - ble/test 'ble/util/chars2s 956' ret=μ - ble/test 'ble/util/chars2s 12354' ret=あ -) -( - check1() { - local char=$1 keyseq=$2 - ble/test "ble/util/c2keyseq $char" ret="$keyseq" - ble/test "ble/util/chars2keyseq $char" ret="$keyseq" - ble/test "ble/util/keyseq2chars '$keyseq'; ret=\"\${ret[*]}\"" ret="${3:-$char}" - ble/test "ble/util/chars2keyseq 98 $char 99" ret="b${keyseq}c" - ble/test "ble/util/keyseq2chars 'b${keyseq}c'; ret=\"\${ret[*]}\"" ret="98 ${3:-$char} 99" - } - check1 '7' '\a' - check1 '8' '\b' - check1 '9' '\t' - check1 '10' '\n' - check1 '11' '\v' - check1 '12' '\f' - check1 '13' '\r' - check1 '27' '\e' - check1 '127' '\d' - check1 '92' '\\' - check1 '28' '\x1c' # workaround bashbug \C-\, \C-\\ - check1 '156' '\x9c' # workaround bashbug \C-\, \C-\\ - check1 '0' '\C-@' - check1 '1' '\C-a' - check1 '26' '\C-z' - check1 '29' '\C-]' - check1 '30' '\C-^' - check1 '31' '\C-_' - check1 '128' '\M-\C-@' '27 0' - check1 '64' '@' - check1 '97' 'a' - check1 '956' 'μ' - check1 '12354' 'あ' - ble/test ble/util/c2keyseq ret='\C-@' - ble/test ble/util/chars2keyseq ret= - ble/test ble/util/keyseq2chars ret= -) -( - function pack { ret="${bytes[*]}"; } - ble/test 'ble/encoding:UTF-8/b2c ' ret=0 - ble/test 'ble/encoding:UTF-8/b2c 97' ret=97 - ble/test 'ble/encoding:UTF-8/b2c 97 98 99 99' ret=97 - ble/test 'ble/encoding:UTF-8/b2c 206 188 99 99' ret=956 - ble/test 'ble/encoding:UTF-8/b2c 227 129 130 99' ret=12354 - ble/test 'ble/encoding:UTF-8/c2b 97 ; pack' ret=97 - ble/test 'ble/encoding:UTF-8/c2b 956 ; pack' ret='206 188' - ble/test 'ble/encoding:UTF-8/c2b 12354; pack' ret='227 129 130' - ble/test 'ble/encoding:UTF-8/c2b ; pack' ret=0 - ble/test 'ble/encoding:UTF-8/c2b 0 ; pack' ret=0 - ble/test 'ble/encoding:UTF-8/c2b 127 ; pack' ret=127 - ble/test 'ble/encoding:UTF-8/c2b 128 ; pack' ret='194 128' - ble/test 'ble/encoding:UTF-8/c2b 2047; pack' ret='223 191' - ble/test 'ble/encoding:UTF-8/c2b 2048; pack' ret='224 160 128' -) -( - function pack { ret="${bytes[*]}"; } - ble/test 'ble/encoding:C/b2c ' ret=0 - ble/test 'ble/encoding:C/b2c 97' ret=97 - ble/test 'ble/encoding:C/b2c 97 98 99 99' ret=97 - ble/test 'ble/encoding:C/b2c 206 188 99 99' ret=206 - ble/test 'ble/encoding:C/b2c 227 129 130 99' ret=227 - ble/test 'ble/encoding:C/b2c 97 ' ret=97 - ble/test 'ble/encoding:C/b2c 956 ' ret=188 - ble/test 'ble/encoding:C/b2c 12354 ' ret=66 - ble/test 'ble/encoding:C/c2b ; pack' ret=0 - ble/test 'ble/encoding:C/c2b 0 ; pack' ret=0 - ble/test 'ble/encoding:C/c2b 127 ; pack' ret=127 - ble/test 'ble/encoding:C/c2b 128 ; pack' ret=128 - ble/test 'ble/encoding:C/c2b 2047; pack' ret=255 - ble/test 'ble/encoding:C/c2b 2048; pack' ret=0 -) -( - clear-locale() { LC_ALL= LANG= LC_CTYPE=; } - for lang in {C,en_US,ja{_JP,}}.{UTF-8,utf8} ja_JP.{utf8,UTF-8}@cjk{wide,narrow,single}; do - clear-locale - ble/test "LANG=$lang; ble/util/is-unicode-output" - clear-locale - ble/test "LANG=C LC_CTYPE=$lang; ble/util/is-unicode-output" - clear-locale - ble/test "LC_CTYPE=C LANG=C LC_ALL=$lang; ble/util/is-unicode-output" - done - for lang in '' C POSIX UTF-8 utf8 ja_JP.eucJP; do - clear-locale - ble/test "LANG=$lang; ble/util/is-unicode-output" exit=1 - clear-locale - ble/test "LANG=C LC_CTYPE=$lang; ble/util/is-unicode-output" exit=1 - clear-locale - ble/test "LC_CTYPE=C LANG=C LC_ALL=$lang; ble/util/is-unicode-output" exit=1 - done -) -ble/test/end-section -- cgit v1.2.3