Skip to content

Commit 21b8a71

Browse files
author
Ben Schmeckpeper
committed
Exercise 2.54
1 parent bcb34cc commit 21b8a71

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

exercise_2.54.exs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
defmodule Equality do
2+
def equal?([], []), do: true
3+
def equal?([head1 | tail1], [head2 | tail2]), do: equal?(head1, head2) && equal?(tail1, tail2)
4+
def equal?(a, b) when is_atom(a) and is_atom(b), do: a == b
5+
def equal?(_, _), do: false
6+
end
7+
8+
ExUnit.start
9+
10+
defmodule EqualityTests do
11+
use ExUnit.Case, async: true
12+
13+
test "empty lists are equal" do
14+
assert Equality.equal?([], [])
15+
end
16+
17+
test "single element lists are equal if the elements are equal" do
18+
assert Equality.equal?([:a], [:a])
19+
refute Equality.equal?([:a], [:b])
20+
end
21+
22+
test "lists of unequal length are not equal" do
23+
refute Equality.equal?(~w(foo bar baz bat)a, ~w(foo bar baz)a)
24+
refute Equality.equal?(~w(foo bar baz bat)a, ~w(foo bar baz bat qux)a)
25+
end
26+
27+
test "lists of equal length with matching elements are equal" do
28+
assert Equality.equal?(~w(foo bar baz bat qux)a, ~w(foo bar baz bat qux)a)
29+
end
30+
end

0 commit comments

Comments
 (0)