32 lines
1.4 KiB
Elixir
32 lines
1.4 KiB
Elixir
defmodule AoC.Util.RangeTest do
|
|
use ExUnit.Case
|
|
doctest AoC.Util.Range
|
|
|
|
test "AoC.Util.Range.difference should work with disjoint ranges" do
|
|
assert AoC.Util.Range.difference(1..10, 11..20) == [1..10]
|
|
end
|
|
|
|
test "AoC.Util.Range.difference should work with contained ranges" do
|
|
assert AoC.Util.Range.difference(1..10, 2..5) == [1..1, 6..10]
|
|
assert AoC.Util.Range.difference(1..10, 1..10) == []
|
|
assert AoC.Util.Range.difference(1..10, 2..10) == [1..1]
|
|
assert AoC.Util.Range.difference(1..10, -1..11) == []
|
|
assert AoC.Util.Range.difference(1..10, 1..12) == []
|
|
assert AoC.Util.Range.difference(1..10, 2..2) == [1..1, 3..10]
|
|
end
|
|
|
|
test "AoC.Util.Range.difference should work with partially overlapped ranges" do
|
|
assert AoC.Util.Range.difference(1..10, -1..3) == [4..10]
|
|
assert AoC.Util.Range.difference(1..10, 1..1) == [2..10]
|
|
assert AoC.Util.Range.difference(1..10, 8..12) == [1..7]
|
|
assert AoC.Util.Range.difference(1..10, 2..12) == [1..1]
|
|
end
|
|
|
|
test "AoC.Util.Range.intersection should work with contained ranges" do
|
|
assert AoC.Util.Range.intersection(1..10, 1..3) == 1..3
|
|
assert AoC.Util.Range.intersection(1..10, -1..3) == 1..3
|
|
assert AoC.Util.Range.intersection(-1..10, 1..3) == 1..3
|
|
assert AoC.Util.Range.intersection(-1..10, -100..300) == -1..10
|
|
assert AoC.Util.Range.intersection(-1..10, 11..300) == (..)
|
|
end
|
|
end
|