Simplified, shellchecked, and name deconflicted for personal use

This commit is contained in:
Brandon Rozek 2020-12-14 10:08:36 -05:00
parent 142e1bade4
commit 46722c9b5d
17 changed files with 540 additions and 774 deletions

View file

@ -1,15 +1,15 @@
#! /bin/bash
testAppendToEmptyList() {
assertEquals 4 "$(list | append 4)"
assertEquals 4 "$(list | list_append 4)"
}
testAppendToOneElementList() {
assertEquals "1 4" "$(list 1 | append 4 | unlist)"
assertEquals "1 4" "$(list 1 | list_append 4 | unlist)"
}
testAppendToList() {
assertEquals "1 2 3 4 5 4" "$(list 1 2 3 4 5 | append 4 | unlist)"
assertEquals "1 2 3 4 5 4" "$(list 1 2 3 4 5 | list_append 4 | unlist)"
}
. ./shunit2-init.sh

View file

@ -1,19 +0,0 @@
#! /bin/bash
testCatchIfSuccess() {
assertEquals 1 "$(echo 'expr 2 / 2' | catch lambda cmd status val . '[[ $status -eq 0 ]] && tupl $val || echo 0')"
}
testCatchIfError() {
assertEquals 0 $(echo 'expr 2 / 0' | catch lambda cmd status val . '[[ $status -eq 0 ]] && tupl $val || echo 0')
assertEquals 'cmd=expr 2 / 0,status=2,val=(expr:,division,by,zero)' "$(echo 'expr 2 / 0' | echo 'expr 2 / 0' | LANG=en catch lambda cmd status val . 'echo cmd=$cmd,status=$status,val=$val')"
}
testCatchEdgeCases() {
assertEquals 1 "$(echo 'expr 2 / 2' | catch lambda _ _ val . 'tupl $val')"
assertEquals 'expr 2 / 2' "$(echo 'expr 2 / 2' | catch lambda cmd . 'ret $cmd')"
assertEquals 'expr 2 / 2,0' "$(echo 'expr 2 / 2' | catch lambda cmd status . 'ret $cmd,$status')"
assertEquals 'expr 2 / 0,2' "$(echo 'expr 2 / 0' | catch lambda cmd status . 'ret $cmd,$status')"
}
. ./shunit2-init.sh

View file

@ -1,23 +1,23 @@
#! /bin/bash
testDrop9From10() {
assertEquals 10 $(list {1..10} | drop 9)
assertEquals 10 $(list {1..10} | list_drop 9)
}
testDrop8From10() {
assertEquals "9 10" "$(list {1..10} | drop 8 | unlist)"
assertEquals "9 10" "$(list {1..10} | list_drop 8 | unlist)"
}
testDropAll() {
assertEquals "" "$(list {1..10} | drop 10)"
assertEquals "" "$(list {1..10} | list_drop 10)"
}
testDropMoreThanAvailable() {
assertEquals "" "$(list {1..10} | drop 15)"
assertEquals "" "$(list {1..10} | list_drop 15)"
}
testDropZero() {
assertEquals "1 2 3 4 5 6 7 8 9 10" "$(list {1..10} | drop 0 | unlist)"
assertEquals "1 2 3 4 5 6 7 8 9 10" "$(list {1..10} | list_drop 0 | unlist)"
}
. ./shunit2-init.sh

View file

@ -1,16 +1,16 @@
#! /bin/bash
testLHeadFromList() {
assertEquals 1 $(list {1..10} | lhead)
assertEquals 5 $(list 5 6 7 | lhead)
assertEquals 1 $(list {1..10} | list_head)
assertEquals 5 $(list 5 6 7 | list_head)
}
testLHeadFromOneElementList() {
assertEquals 1 $(list 1 | lhead)
assertEquals 1 $(list 1 | list_head)
}
testLHeadFromEmptyList() {
assertEquals "" "$(list | lhead)"
assertEquals "" "$(list | list_head)"
}
. ./shunit2-init.sh

View file

@ -1,16 +1,16 @@
#! /bin/bash
testLastFromList() {
assertEquals 10 $(list {1..10} | last)
assertEquals 7 $(list 5 6 7 | last)
assertEquals 10 $(list {1..10} | list_last)
assertEquals 7 $(list 5 6 7 | list_last)
}
testLastFromOneElementList() {
assertEquals 1 $(list 1 | last)
assertEquals 1 $(list 1 | list_last)
}
testLastFromEmptyList() {
assertEquals "" "$(list | last)"
assertEquals "" "$(list | list_last)"
}
. ./shunit2-init.sh

View file

@ -1,38 +1,33 @@
#!/bin/bash
testMapEmptyList() {
assertEquals "" "$(list | map lambda x . 'echo $(($x + 1))')"
assertEquals "" "$(list | list_map lambda x . 'echo $(($x + 1))')"
}
testMapEmptyList_ifNoArgumentsInLambda() {
assertEquals "" "$(list | map lambda . 'echo 3')"
assertEquals "" "$(list | list_map lambda . 'echo 3')"
}
testMapOneElementList() {
assertEquals "3" "$(list 2 | map lambda x . 'echo $(($x + 1))')"
assertEquals "3" "$(list 2 | list_map lambda x . 'echo $(($x + 1))')"
}
testMapList() {
assertEquals "2 3 4 5 6" "$(list {1..5} | map lambda x . 'echo $(($x + 1))' | unlist)"
assertEquals "2 3 4 5 6" "$(list {1..5} | list_map lambda x . 'echo $(($x + 1))' | unlist)"
}
testMapList_ifNoArgumentsInLambda() {
assertEquals "9 9 9 9 9" "$(list {1..5} | map lambda . 'echo 9' | unlist)"
assertEquals "9 9 9 9 9" "$(list {1..5} | list_map lambda . 'echo 9' | unlist)"
}
testMapList_ifManyArgumentsInLambda() {
list {1..5} | map lambda x y . 'echo $(($x + $y))' 2> /dev/null \
list {1..5} | list_map lambda x y . 'echo $(($x + $y))' 2> /dev/null \
&& fail "There should be syntax error, because map is an one argument operation"
}
testFlatMap() {
assertEquals "1 2 3 2 3 3" "$(list {1..3} | map lambda x . 'seq $x 3' | unlist)"
assertEquals "d e h l l l o o r w" "$(list hello world | map lambda x . 'command fold -w 1 <<< $x' | sort | unlist)"
}
testMapNoLambdaSyntax() {
assertEquals "1 2 3" "$(list 1 2 3 | map echo | unlist)"
assertEquals "1 is a number 2 is a number 3 is a number" "$(list 1 2 3 | map 'echo $ is a number' | unlist)"
assertEquals "1 2 3 2 3 3" "$(list {1..3} | list_map lambda x . 'seq $x 3' | unlist)"
assertEquals "d e h l l l o o r w" "$(list hello world | list_map lambda x . 'command fold -w 1 <<< $x' | sort | unlist)"
}
. ./shunit2-init.sh

View file

@ -1,29 +0,0 @@
#! /bin/bash
testMaybe() {
assertEquals '(Just,1)' "$(maybe 1)"
assertEquals '(Just,1)' "$(echo 1 | maybe)"
assertEquals '(Nothing)' "$(maybe '')"
assertEquals '(Nothing)' "$(maybe ' ')"
assertEquals '(Nothing)' "$(maybe ' ' ' ' ' ')"
assertEquals '(Nothing)' "$(echo | maybe)"
assertEquals '(Just,1 2 3)' "$(maybe 1 2 3)"
assertEquals '(Just,1 2 3)' "$(echo 1 2 3 | maybe)"
}
testMaybemap() {
assertEquals '(Just,3)' "$(echo 1 | maybe | maybemap lambda a . 'echo $(( a + 1 ))' | maybemap lambda a . 'echo $(( a + 1 ))')"
assertEquals '(Nothing)' "$(echo | maybe | maybemap lambda a . 'echo $(( a + 1 ))' | maybemap lambda a . 'echo $(( a + 1 ))')"
assertEquals '(Nothing)' "$(echo 1 | maybe | maybemap lambda a . 'echo $(( a + 1 ))' | maybemap lambda a . 'echo')"
assertEquals '(Nothing)' "$(echo 1 | maybe | maybemap lambda a . 'echo $(( a + 1 ))' | maybemap lambda a . 'echo' | maybemap lambda a . 'echo $(( a + 1 ))')"
}
testMaybevalue() {
assertEquals 3 "$(echo 1 | maybe | maybemap lambda a . 'echo $(( a + 1 ))' | maybemap lambda a . 'echo $(( a + 1 ))' | maybevalue 0)"
assertEquals 0 "$(echo | maybe | maybemap lambda a . 'echo $(( a + 1 ))' | maybemap lambda a . 'echo $(( a + 1 ))' | maybevalue 0)"
assertEquals 'a b c' "$(echo | maybe | maybemap lambda a . 'echo $(( a + 1 ))' | maybemap lambda a . 'echo $(( a + 1 ))' | maybevalue a b c)"
}
. ./shunit2-init.sh

View file

@ -8,16 +8,16 @@ testIsint() {
assertEquals '1 2 3 4 5' "$(list 1 a 2 b 3 c 4 d 5 e | filter lambda x . 'isint $x' | unlist )"
assertEquals '1 2' "$(list 1 a 2 b 3 c 4 d 5 e | filter lambda x . '($(isint $x) && [[ $x -le 2 ]] && ret true) || ret false ' | unlist )"
assertEquals 'false' $(not isint 1)
assertEquals 'true' $(not isint a)
assertEquals 'false' $(not "isint 1")
assertEquals 'true' $(not "isint a")
}
testIsempty() {
assertEquals 'true' $(isempty "")
assertEquals 'false' $(isempty a)
assertEquals 'true' $(not isempty a)
assertEquals 'false' $(not isempty "")
assertEquals 'true' $(not "isempty a")
assertEquals 'false' $(not "isempty \"\"")
}
testIsfile() {
@ -26,7 +26,7 @@ testIsfile() {
assertEquals 'true' $(isfile $f)
assertEquals 'false' $(isfile $f.xxx)
assertEquals 'false' $(isfile "")
assertEquals 'true' $(not isfile $f.xxx)
assertEquals 'true' $(not "isfile $f.xxx")
assertEquals 'false' $(isnonzerofile $f)
echo hello world >$f

View file

@ -1,15 +1,15 @@
#! /bin/bash
testPrependToEmptyList() {
assertEquals 4 "$(list | prepend 4)"
assertEquals 4 "$(list | list_prepend 4)"
}
testPrependToOneElementList() {
assertEquals "4 1" "$(list 1 | prepend 4 | unlist)"
assertEquals "4 1" "$(list 1 | list_prepend 4 | unlist)"
}
testPrependToList() {
assertEquals "4 1 2 3 4 5" "$(list 1 2 3 4 5 | prepend 4 | unlist)"
assertEquals "4 1 2 3 4 5" "$(list 1 2 3 4 5 | list_prepend 4 | unlist)"
}
. ./shunit2-init.sh

View file

@ -1,15 +1,15 @@
#! /bin/bash
testLTailFrom10() {
assertEquals "2 3 4 5 6 7 8 9 10" "$(list {1..10} | ltail | unlist)"
assertEquals "2 3 4 5 6 7 8 9 10" "$(list {1..10} | list_tail | unlist)"
}
testLTailFromOneElementList() {
assertEquals "" "$(list 1 | ltail)"
assertEquals "" "$(list 1 | list_tail)"
}
testLTailFromEmptyList() {
assertEquals "" "$(list | ltail)"
assertEquals "" "$(list | list_tail)"
}
. ./shunit2-init.sh

View file

@ -1,23 +1,23 @@
#! /bin/bash
testTake9From10() {
assertEquals "1 2 3 4 5 6 7 8 9" "$(list {1..10} | take 9 | unlist)"
assertEquals "1 2 3 4 5 6 7 8 9" "$(list {1..10} | list_take 9 | unlist)"
}
testTake8From10() {
assertEquals "1 2 3 4 5 6 7 8" "$(list {1..10} | take 8 | unlist)"
assertEquals "1 2 3 4 5 6 7 8" "$(list {1..10} | list_take 8 | unlist)"
}
testTakeAll() {
assertEquals "1 2 3 4 5 6 7 8 9 10" "$(list {1..10} | take 10 | unlist)"
assertEquals "1 2 3 4 5 6 7 8 9 10" "$(list {1..10} | list_take 10 | unlist)"
}
testTakeMoreThanAvailable() {
assertEquals "1 2 3 4 5 6 7 8 9 10" "$(list {1..10} | take 15 | unlist)"
assertEquals "1 2 3 4 5 6 7 8 9 10" "$(list {1..10} | list_take 15 | unlist)"
}
testTakeZero() {
assertEquals "" "$(list {1..10} | take 0 | unlist)"
assertEquals "" "$(list {1..10} | list_take 0 | unlist)"
}
. ./shunit2-init.sh

View file

@ -1,11 +0,0 @@
#! /bin/bash
testTry() {
assertEquals 1 "$(echo 'expr 2 / 2' | try lambda _ . 'ret 0')"
assertEquals 0 "$(echo 'expr 2 / 0' | try lambda _ . 'ret 0')"
assertEquals 2 "$(echo 'expr 2 / 0' | try lambda status . 'ret $status')"
assertEquals 'already up to date' "$(echo 'echo already up to date' | try lambda _ . 'ret error')"
assertEquals 'error exit 1' "$(try λ _ . 'echo "error"; echo exit 1' < <(echo fgit pull) | unlist)"
}
. ./shunit2-init.sh

View file

@ -8,8 +8,8 @@ testTupIfOneElement() {
assertEquals '(1)' $(tup 1)
assertEquals '(")' $(tup '"')
assertEquals "(')" $(tup "'")
assertEquals "(u002c)" $(tup ",")
assertEquals "(u002cu002c)" $(tup ",,")
assertEquals "(,)" $(tup ",")
assertEquals "(,,)" $(tup ",,")
assertEquals "(()" $(tup "(")
assertEquals "())" $(tup ")")
}
@ -20,42 +20,10 @@ testTupHappyPath() {
assertEquals '(a b,c d e,f)' "$(tup 'a b' 'c d e' 'f')"
}
testTupxHappyPath() {
assertEquals '4' $(tup 4 5 1 4 | tupx 1)
assertEquals '5' $(tup 4 5 1 4 | tupx 2)
assertEquals '1' $(tup 4 5 1 4 | tupx 3)
assertEquals '4' $(tup 4 5 1 4 | tupx 4)
}
testTupxIfEmpty() {
assertEquals '' "$(tup '' | tupx 1)"
assertEquals '' "$(tup '' | tupx 5)"
}
testTupxIfZeroIndex() {
assertEquals '' "$(tup 1 3 | tupx 0 2>/dev/null)"
}
testTupxIfSpecialChars() {
assertEquals ',' "$(tup ',' | tupx 1)"
assertEquals ',,' "$(tup ',,' | tupx 1)"
assertEquals '(' "$(tup '(' | tupx 1)"
assertEquals ')' "$(tup ')' | tupx 1)"
assertEquals '()' "$(tup '()' | tupx 1)"
assertEquals '(' "$(tup '(' ')' | tupx 1)"
assertEquals '(' "$(tup '(' '(' | tupx 1)"
assertEquals ')' "$(tup ')' ')' | tupx 1)"
assertEquals ',' "$(tup 'u002c' | tupx 1)"
assertEquals ',,' "$(tup 'u002cu002c' | tupx 1)"
}
testTupxRange() {
assertEquals '4 5' "$(tup 4 5 1 4 | tupx 1-2 | unlist)"
assertEquals '4 4' "$(tup 4 5 1 4 | tupx 1,4 | unlist)"
assertEquals '4 5 4' "$(tup 4 5 1 4 | tupx 1,2,4 | unlist)"
}
testTupl() {
assertEquals '4' "$(tup 4 5 | tupl)"
assertEquals '4' "$(tup 4 5 6 | tupl)"
@ -69,16 +37,4 @@ testTupr() {
assertEquals '5' "$(tup 5 | tupr)"
}
testNTup() {
assertEquals '(KFlRbz0sWWdvPSkK,Ywo=)' "$(ntup $(ntup a b) c)"
assertEquals '(YQo=,Ygo=)' "$(ntupl '(KFlRbz0sWWdvPSkK,Ywo=)')"
assertEquals 'a' "$(ntupl '(YQo=,Ygo=)')"
assertEquals 'b' "$(ntupr '(YQo=,Ygo=)')"
assertEquals 'c' "$(ntupr '(KFlRbz0sWWdvPSkK,Ywo=)')"
assertEquals 'a' "$(ntup $(ntup a b) c | ntupx 1 | ntupx 1)"
assertEquals 'b' "$(ntup $(ntup a b) c | ntupx 1 | ntupx 2)"
assertEquals 'c' "$(ntup $(ntup a b) c | ntupx 2)"
assertEquals 'a b' "$(ntup $(ntup a b) c | ntupx 1 | ntupx 1,2 | unlist)"
}
. ./shunit2-init.sh