summaryrefslogtreecommitdiff
path: root/.local/src/blesh/lib/test-util.sh
diff options
context:
space:
mode:
Diffstat (limited to '.local/src/blesh/lib/test-util.sh')
-rw-r--r--.local/src/blesh/lib/test-util.sh1555
1 files changed, 0 insertions, 1555 deletions
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} <test>"' \
- ret='\[hello\]\ \(world\)\ {this,is}\ \<test\>'
- ble/test 'ble/string#escape-for-bash-specialchars "[hello] (world) {this,is} <test>" b' \
- ret='\[hello\]\ \(world\)\ \{this\,is\}\ \<test\>'
- 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