exercism/elixir/sublist/sublist_test.exs

111 lines
2.7 KiB
Elixir

if !System.get_env("EXERCISM_TEST_EXAMPLES") do
Code.load_file("sublist.exs", __DIR__)
end
ExUnit.start()
ExUnit.configure(exclude: :pending, trace: true)
defmodule SublistTest do
use ExUnit.Case
test "empty equals empty" do
assert Sublist.compare([], []) == :equal
end
# @tag :pending
test "empty is a sublist of anything" do
assert Sublist.compare([], [nil]) == :sublist
end
# @tag :pending
test "anything is a superlist of empty" do
assert Sublist.compare([nil], []) == :superlist
end
# @tag :pending
test "1 is not 2" do
assert Sublist.compare([1], [2]) == :unequal
end
# @tag :pending
test "comparing massive equal lists" do
l = Enum.to_list(1..1_000_000)
assert Sublist.compare(l, l) == :equal
end
# @tag :pending
test "sublist at start" do
assert Sublist.compare([1, 2, 3], [1, 2, 3, 4, 5]) == :sublist
end
# @tag :pending
test "sublist in middle" do
assert Sublist.compare([4, 3, 2], [5, 4, 3, 2, 1]) == :sublist
end
# @tag :pending
test "sublist at end" do
assert Sublist.compare([3, 4, 5], [1, 2, 3, 4, 5]) == :sublist
end
# @tag :pending
test "partially matching sublist at start" do
assert Sublist.compare([1, 1, 2], [1, 1, 1, 2]) == :sublist
end
# @tag :pending
test "sublist early in huge list" do
assert Sublist.compare([3, 4, 5], Enum.to_list(1..1_000_000)) == :sublist
end
# @tag :pending
test "huge sublist not in huge list" do
assert Sublist.compare(Enum.to_list(10..1_000_001), Enum.to_list(1..1_000_000)) == :unequal
end
# @tag :pending
test "superlist at start" do
assert Sublist.compare([1, 2, 3, 4, 5], [1, 2, 3]) == :superlist
end
# @tag :pending
test "superlist in middle" do
assert Sublist.compare([5, 4, 3, 2, 1], [4, 3, 2]) == :superlist
end
# @tag :pending
test "superlist at end" do
assert Sublist.compare([1, 2, 3, 4, 5], [3, 4, 5]) == :superlist
end
# @tag :pending
test "1 and 2 does not contain 3" do
assert Sublist.compare([1, 2], [3]) == :unequal
end
# @tag :pending
test "partially matching superlist at start" do
assert Sublist.compare([1, 1, 1, 2], [1, 1, 2]) == :superlist
end
# @tag :pending
test "superlist early in huge list" do
assert Sublist.compare(Enum.to_list(1..1_000_000), [3, 4, 5]) == :superlist
end
# @tag :pending
test "strict equality needed" do
assert Sublist.compare([1], [1.0, 2]) == :unequal
end
# @tag :pending
test "recurring values sublist" do
assert Sublist.compare([1, 2, 1, 2, 3], [1, 2, 3, 1, 2, 1, 2, 3, 2, 1]) == :sublist
end
# @tag :pending
test "recurring values unequal" do
assert Sublist.compare([1, 2, 1, 2, 3], [1, 2, 3, 1, 2, 3, 2, 3, 2, 1]) == :unequal
end
end