Merge pull request #298 from bucaran/master

This commit is contained in:
Bruno Pinto 2015-01-10 15:38:01 -02:00
commit fed8c86313
5 changed files with 97 additions and 13 deletions

View File

@ -1,8 +0,0 @@
# Remove item from list. List must be the name of a global variable.
# @params <item> <list>
function array.delete
set -l item $argv[1]
if set -l index (contains -i -- $item $$argv[2])
set -e $argv[2][$index]
end
end

View File

@ -20,5 +20,15 @@ function expect
else else
emit assertion_failure "Expected \"$list\" to include \"$item\"" emit assertion_failure "Expected \"$list\" to include \"$item\""
end end
case 'to_not_include'
set -l item $actual
set -l list $expected
if not contains -- "$item" $list
emit assertion_success
else
emit assertion_failure "Expected \"$list\" to not include \"$item\""
end
end end
end end

View File

@ -0,0 +1,35 @@
# NAME
# list.erase - erase items from lists
#
# SYNOPSIS
# <item> [<item>...] [--from] <list>
# <item> [<item>...] --from <list1> [<list2>...]
#
# DESCRIPTION
# Erase any number of items from any number of lists. If more than one
# list is specified it must be separated from the items with --from.
#
# NOTES
# While items are basically any valid sequence of symbols, lists refer
# to any global variable or local variable in the scope of the calling
# function by name.
#
#/
function -S list.erase
# List to erase from is last item by default.
set -l items $argv[1..-2]
set -l lists $argv[-1]
if set -l index (contains -i -- --from $argv)
# Everything before --from are items to erase and everything
# after, lists to erase any found items from.
set items $argv[1..(math $index-1)]
set lists $argv[(math $index+1)..-1]
end
for item in $items
for list in $lists
if set -l index (contains -i -- $item $$list)
set -e $list[1][$index]
end
end
end
end

View File

@ -0,0 +1,48 @@
function describe_list_erase
function before_each
set -g nums_until_10 1 2 3 4 5 6 7 8 9 10
set -g odds_until_10 1 3 5 7 9
end
function it_erases_one_element
list.erase 1 nums_until_10
expect $nums_until_10 to_not_include 1
end
function it_erases_one_element_with_from_syntax
list.erase 1 --from nums_until_10
expect $nums_until_10 to_not_include 1
end
function it_erases_one_element_from_multiple_lists
list.erase 1 --from nums_until_10 odds_until_10
expect $nums_until_10 to_not_include 1 and
expect $odds_until_10 to_not_include 1
end
function it_erases_one_element_from_multiple_lists_when_only_one_has_the_element
list.erase 2 --from nums_until_10 odds_until_10
expect $nums_until_10 to_not_include 2
end
function it_erases_multiple_elements
list.erase 1 2 nums_until_10
expect $nums_until_10 to_not_include 1 and
expect $nums_until_10 to_not_include 2
end
function it_erases_multiple_elements_with_from_syntax
list.erase 1 2 --from nums_until_10
expect $nums_until_10 to_not_include 1 and
expect $nums_until_10 to_not_include 2
end
function it_erases_multiple_elements_from_multiple_lists
list.erase 1 2 --from nums_until_10 odds_until_10
expect $nums_until_10 to_not_include 1 and
expect $nums_until_10 to_not_include 2 and
expect $odds_until_10 to_not_include 1
end
end
import plugins/fish-spec

View File

@ -34,15 +34,14 @@ function describe_oh_my_fish
end end
function it_loads_all_oh_my_fish_functions function it_loads_all_oh_my_fish_functions
array.delete "$fish_path/functions/" fish_function_path list.erase "$fish_path/functions/" --from fish_function_path
load_oh_my_fish load_oh_my_fish
expect $fish_function_path to_include $fish_path/functions/ expect $fish_function_path to_include $fish_path/functions/
end end
function it_loads_all_selected_plugins function it_loads_all_selected_plugins
array.delete "$fish_path/plugins/bak" fish_function_path list.erase "$fish_path/plugins/bak" "$fish_path/plugins/z" --from fish_function_path
array.delete "$fish_path/plugins/z" fish_function_path
set fish_plugins bak z set fish_plugins bak z
load_oh_my_fish load_oh_my_fish
@ -51,7 +50,7 @@ function describe_oh_my_fish
end end
function it_loads_plugins_from_custom_folder function it_loads_plugins_from_custom_folder
array.delete "$fish_custom/plugins/example" fish_function_path list.erase "$fish_custom/plugins/example" --from fish_function_path
set fish_plugins example set fish_plugins example
load_oh_my_fish load_oh_my_fish
@ -59,7 +58,7 @@ function describe_oh_my_fish
end end
function it_loads_the_selected_theme function it_loads_the_selected_theme
array.delete "$fish_path/themes/l" fish_function_path list.erase "$fish_path/themes/l" --from fish_function_path
set fish_theme l set fish_theme l
load_oh_my_fish load_oh_my_fish