1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
Code.require_file("test_helper.exs", __DIR__)
defmodule RangeTest do
use ExUnit.Case, async: true
doctest Range
test "precedence" do
assert Enum.to_list(1..(3 + 2)) == [1, 2, 3, 4, 5]
assert 1..3 |> Enum.to_list() == [1, 2, 3]
end
test "op" do
assert (1..3).first == 1
assert (1..3).last == 3
end
test "enum" do
refute Enum.empty?(1..1)
assert Enum.member?(1..3, 2)
refute Enum.member?(1..3, 0)
refute Enum.member?(1..3, 4)
refute Enum.member?(3..1, 0)
refute Enum.member?(3..1, 4)
assert Enum.count(1..3) == 3
assert Enum.count(3..1) == 3
assert Enum.map(1..3, &(&1 * 2)) == [2, 4, 6]
assert Enum.map(3..1, &(&1 * 2)) == [6, 4, 2]
end
test "inspect" do
assert inspect(1..3) == "1..3"
assert inspect(3..1) == "3..1"
end
test "integer only" do
x = 1.0
y = 3.0
message = "ranges (first..last) expect both sides to be integers, got: 1.0..3.0"
assert_raise ArgumentError, message, fn ->
Enum.map(x..y, &(&1 * 2))
end
first = []
last = []
message = "ranges (first..last) expect both sides to be integers, got: []..[]"
assert_raise ArgumentError, message, fn ->
first..last
Enum.map(first..last, & &1)
end
end
end
|