mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-12-19 05:51:57 +00:00
Add tests for functions/utilities.zsh
In particular: `defined`, `set_default`, `getRelevantItem` and `segmentShouldBeJoined`
This commit is contained in:
parent
d7a0f49391
commit
c0c611c21d
1 changed files with 86 additions and 0 deletions
|
@ -10,6 +10,24 @@ function oneTimeSetUp() {
|
||||||
source functions/utilities.zsh
|
source functions/utilities.zsh
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testDefinedFindsDefinedVariable() {
|
||||||
|
my_var='X'
|
||||||
|
|
||||||
|
assertTrue "defined 'my_var'"
|
||||||
|
unset my_var
|
||||||
|
}
|
||||||
|
|
||||||
|
function testDefinedDoesNotFindUndefinedVariable() {
|
||||||
|
assertFalse "defined 'my_var'"
|
||||||
|
}
|
||||||
|
|
||||||
|
function testSetDefaultSetsVariable() {
|
||||||
|
set_default 'my_var' 'x'
|
||||||
|
|
||||||
|
assertEquals 'x' "$my_var"
|
||||||
|
unset my_var
|
||||||
|
}
|
||||||
|
|
||||||
function testPrintSizeHumanReadableWithBigNumber() {
|
function testPrintSizeHumanReadableWithBigNumber() {
|
||||||
# Interesting: Currently we can't support numbers bigger than that.
|
# Interesting: Currently we can't support numbers bigger than that.
|
||||||
assertEquals '0.87E' "$(printSizeHumanReadable 1000000000000000000)"
|
assertEquals '0.87E' "$(printSizeHumanReadable 1000000000000000000)"
|
||||||
|
@ -19,4 +37,72 @@ function testPrintSizeHumanReadableWithExabytesAsBase() {
|
||||||
assertEquals '9.77Z' "$(printSizeHumanReadable 10000 'E')"
|
assertEquals '9.77Z' "$(printSizeHumanReadable 10000 'E')"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testGetRelevantItem() {
|
||||||
|
typeset -a list
|
||||||
|
list=(a b c)
|
||||||
|
local callback='[[ "$item" == "b" ]] && echo "found"'
|
||||||
|
|
||||||
|
local result=$(getRelevantItem "$list" "$callback")
|
||||||
|
assertEquals 'found' "$result"
|
||||||
|
|
||||||
|
unset list
|
||||||
|
}
|
||||||
|
|
||||||
|
function testGetRelevantItemDoesNotReturnNotFoundItems() {
|
||||||
|
typeset -a list
|
||||||
|
list=(a b c)
|
||||||
|
local callback='[[ "$item" == "d" ]] && echo "found"'
|
||||||
|
|
||||||
|
local result=$(getRelevantItem "$list" "$callback")
|
||||||
|
assertEquals '' ''
|
||||||
|
|
||||||
|
unset list
|
||||||
|
}
|
||||||
|
|
||||||
|
function testSegmentShouldBeJoinedIfDirectPredecessingSegmentIsJoined() {
|
||||||
|
typeset -a segments
|
||||||
|
segments=(a b_joined c_joined)
|
||||||
|
# Look at the third segment
|
||||||
|
local current_index=3
|
||||||
|
local last_element_index=2
|
||||||
|
|
||||||
|
local joined
|
||||||
|
segmentShouldBeJoined $current_index $last_element_index "$segments" && joined=true || joined=false
|
||||||
|
assertTrue "$joined"
|
||||||
|
|
||||||
|
unset segments
|
||||||
|
}
|
||||||
|
|
||||||
|
function testSegmentShouldBeJoinedIfPredecessingSegmentIsJoinedTransitivley() {
|
||||||
|
typeset -a segments
|
||||||
|
segments=(a b_joined c_joined)
|
||||||
|
# Look at the third segment
|
||||||
|
local current_index=3
|
||||||
|
# The last printed segment was the first one,
|
||||||
|
# the second segmend was conditional.
|
||||||
|
local last_element_index=1
|
||||||
|
|
||||||
|
local joined
|
||||||
|
segmentShouldBeJoined $current_index $last_element_index "$segments" && joined=true || joined=false
|
||||||
|
assertTrue "$joined"
|
||||||
|
|
||||||
|
unset segments
|
||||||
|
}
|
||||||
|
|
||||||
|
function testSegmentShouldNotBeJoinedIfPredecessingSegmentIsNotJoinedButConditional() {
|
||||||
|
typeset -a segments
|
||||||
|
segments=(a b_joined c d_joined)
|
||||||
|
# Look at the fourth segment
|
||||||
|
local current_index=4
|
||||||
|
# The last printed segment was the first one,
|
||||||
|
# the second segmend was conditional.
|
||||||
|
local last_element_index=1
|
||||||
|
|
||||||
|
local joined
|
||||||
|
segmentShouldBeJoined $current_index $last_element_index "$segments" && joined=true || joined=false
|
||||||
|
assertFalse "$joined"
|
||||||
|
|
||||||
|
unset segments
|
||||||
|
}
|
||||||
|
|
||||||
source shunit2/source/2.1/src/shunit2
|
source shunit2/source/2.1/src/shunit2
|
||||||
|
|
Loading…
Reference in a new issue