diff options
author | Aleksei Magusev <lexmag@me.com> | 2015-04-09 00:28:49 +0200 |
---|---|---|
committer | Aleksei Magusev <lexmag@me.com> | 2015-04-11 13:44:21 +0200 |
commit | a2dd3172aec7d237daa748f26fb9a9a89facbf68 (patch) | |
tree | e9d32c1888b4ae4a9919cf898843cecd9f395568 /lib/elixir/test/elixir/map_set_test.exs | |
parent | d5b793c73eb5e27cee134feb2d9fe5e22356b623 (diff) | |
download | elixir-a2dd3172aec7d237daa748f26fb9a9a89facbf68.tar.gz |
Introduce `MapSet` data type
Diffstat (limited to 'lib/elixir/test/elixir/map_set_test.exs')
-rw-r--r-- | lib/elixir/test/elixir/map_set_test.exs | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/lib/elixir/test/elixir/map_set_test.exs b/lib/elixir/test/elixir/map_set_test.exs new file mode 100644 index 000000000..859dd71bd --- /dev/null +++ b/lib/elixir/test/elixir/map_set_test.exs @@ -0,0 +1,78 @@ +Code.require_file "test_helper.exs", __DIR__ + +defmodule MapSetTest do + use ExUnit.Case, async: true + + alias MapSet, as: S + + test "put" do + assert S.equal?(S.put(S.new, 1), make([1])) + assert S.equal?(S.put(make([1, 3, 4]), 2), make(1..4)) + assert S.equal?(S.put(make(5..100), 10), make(5..100)) + end + + test "union" do + assert S.equal?(S.union(make([1, 3, 4]), S.new), make([1, 3, 4])) + assert S.equal?(S.union(make(5..15), make(10..25)), make(5..25)) + assert S.equal?(S.union(make(1..120), make(1..100)), make(1..120)) + end + + test "intersection" do + assert S.equal?(S.intersection(S.new, make(1..21)), S.new) + assert S.equal?(S.intersection(make(1..21), make(4..24)), make(4..21)) + assert S.equal?(S.intersection(make(2..100), make(1..120)), make(2..100)) + end + + test "difference" do + assert S.equal?(S.difference(make(2..20), S.new), make(2..20)) + assert S.equal?(S.difference(make(2..20), make(1..21)), S.new) + assert S.equal?(S.difference(make(1..101), make(2..100)), make([1, 101])) + end + + test "disjoint?" do + assert S.disjoint?(S.new, S.new) + assert S.disjoint?(make(1..6), make(8..20)) + refute S.disjoint?(make(1..6), make(5..15)) + refute S.disjoint?(make(1..120), make(1..6)) + end + + test "subset?" do + assert S.subset?(S.new, S.new) + assert S.subset?(make(1..6), make(1..10)) + assert S.subset?(make(1..6), make(1..120)) + refute S.subset?(make(1..120), make(1..6)) + end + + test "equal?" do + assert S.equal?(S.new, S.new) + refute S.equal?(make(1..20), make(2..21)) + assert S.equal?(make(1..120), make(1..120)) + end + + test "delete" do + assert S.equal?(S.delete(S.new, 1), S.new) + assert S.equal?(S.delete(make(1..4), 5), make(1..4)) + assert S.equal?(S.delete(make(1..4), 1), make(2..4)) + assert S.equal?(S.delete(make(1..4), 2), make([1, 3, 4])) + end + + test "size" do + assert S.size(S.new) == 0 + assert S.size(make(5..15)) == 11 + assert S.size(make(2..100)) == 99 + end + + test "to_list" do + assert S.to_list(S.new) == [] + + list = S.to_list(make(1..20)) + assert Enum.sort(list) == Enum.to_list(1..20) + + list = S.to_list(make(5..120)) + assert Enum.sort(list) == Enum.to_list(5..120) + end + + defp make(collection) do + Enum.into(collection, S.new) + end +end |