117 lines
2.1 KiB
Elixir
117 lines
2.1 KiB
Elixir
Code.require_file "../test_helper", __FILE__
|
|
|
|
module OrderedDictTest
|
|
mixin ExUnit::Case
|
|
|
|
def setup(_)
|
|
@('dict, { 'a: 1 })
|
|
end
|
|
|
|
def instance_variable_bracket_test
|
|
1 = @dict['a]
|
|
end
|
|
|
|
def fold_test
|
|
[2, 1] = a_dict.fold [], -> (key, _, acc) [key|acc]
|
|
33 = a_dict.fold 0, -> (_, value, acc) acc + value
|
|
end
|
|
|
|
def map_test
|
|
{ 1: 11, 2: 44 } == a_dict.map -> (key, value) key * value
|
|
end
|
|
|
|
def from_list_test
|
|
{ 'a: 1, 'b: 2 } = OrderedDict.from_list(['a/1, 'b/2])
|
|
end
|
|
|
|
def merge_test
|
|
{ 'a: 3, 'b: 2 } = { 'a: 1 }.merge 'b: 2, 'a: 3
|
|
end
|
|
|
|
def merge_function_test
|
|
{ 'a: 1, 'b: 2 } = { 'a: 1 }.merge { 'b: 2, 'a: 3 }, -> (_, v1, _) v1
|
|
end
|
|
|
|
def to_list_test
|
|
[{'a, 1}, {'b, 2}] = { 'b: 2, 'a: 1 }.to_list
|
|
end
|
|
|
|
def match_test
|
|
{ 1: 2, 2: 4 } = { 2: 4, 1: 2 }
|
|
|
|
{ 1: 2, x: y } = { 2: 4, 1: 2 }
|
|
2 = x
|
|
4 = y
|
|
|
|
{ 1,2 } = kwargs 'a: 1, 'b: 2
|
|
{ 1,2 } = kwargs 'b: 2, 'a: 1
|
|
{ 1,2 } = kwargs 'b: 2, 'a: 1, 'c: 3
|
|
|
|
self.assert_error {'badmatch, {1: 2, 2: 4}}, do
|
|
{ 2: 4, 1: 2 } = { 1: 2, 2: 4 }
|
|
end
|
|
end
|
|
|
|
def delete_test
|
|
{ 'a: 1 } = { 'a: 1, 'b: 2 }.delete('b)
|
|
{ 'a: 1 } = { 'a: 1 }.delete('b)
|
|
end
|
|
|
|
def update_test
|
|
[1] = {}.update('foo, [1], -> (_) self.error "Never called")['foo]
|
|
|
|
dict = { 'list: [] }.update('list, _.push(1)).update('list, _.push(2))
|
|
[1,2] = dict['list]
|
|
|
|
assert_error 'function_clause, do
|
|
{}.update('foo, 2)
|
|
end
|
|
end
|
|
|
|
def brackets_test
|
|
4 = { 2: 4, 1: 2 }[2]
|
|
2 = { 2: 4, 1: 2 }[1]
|
|
nil = { 2: 4, 1: 2 }[0]
|
|
end
|
|
|
|
def get_test
|
|
4 = { 2: 4, 1: 2 }.get 2
|
|
2 = { 2: 4, 1: 2 }.get 1
|
|
nil = { 2: 4, 1: 2 }.get 0
|
|
end
|
|
|
|
def key_question_mark_test
|
|
true = { 1: 2 }.key?(1)
|
|
false = { 1: 2 }.key?(2)
|
|
end
|
|
|
|
def set_new_test
|
|
{ 1: 2 } = { 1: 2 }.set_new(1, 3)
|
|
{ 1: 3 } = {}.set_new(1, 3)
|
|
end
|
|
|
|
def empty_test
|
|
false = { 'a: "abc" }.empty?
|
|
true = {}.empty?
|
|
end
|
|
|
|
def inspect
|
|
"{}" = {}.inspect
|
|
"{'a: 'b}" = {'a: 'b}.inspect
|
|
end
|
|
|
|
private
|
|
|
|
def a_dict
|
|
{ 1:11, 2:22 }
|
|
end
|
|
|
|
def kwargs('a: x, 'b: y)
|
|
{ x, y }
|
|
end
|
|
|
|
def kwargs(dict)
|
|
kwargs(dict.delete('c))
|
|
end
|
|
end
|