You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.6 KiB

defmodule BottomTest do
use ExUnit.Case
import Tetris.Bottom
test "Various Collisions" do
bottom = %{{1,1} => {1,1, :blue}}
assert collides? bottom, {1,1}
refute collides? bottom, {1,2}
assert collides? bottom, {1,1, :red}
assert collides? bottom, {1,1, :blue}
refute collides? bottom, {1,2, :red}
assert collides? bottom, [{1,2, :red}, {1,1, :red}]
refute collides? bottom, [{3,2, :blue}, {4,4, :red}]
end
test "test simple merge with bottom" do
bottom = %{{1,1} => {1,1, :blue}}
actual = merge bottom, [{1,2, :red}, {1,3, :red}]
expected = %{
{1,1} => {1, 1, :blue},
{1,2} => {1, 2, :red},
{1,3} => {1, 3, :red}
}
assert actual == expected
end
test "compute complete ys" do
bottom = new_bottom(20, [{{19, 19}, {19, 19, :red}}])
assert complete_ys(bottom) == [20]
end
test "collapse single row" do
bottom = new_bottom(20, [{{19, 19}, {19, 19, :red}}])
actual = Map.keys(collapse_row(bottom, 20))
refute {19,19} in actual
assert {19, 20} in actual
assert Enum.count(actual) == 1
#IO.inspect collapse_row(bottom, 20)
end
test "full collapse with single row" do
bottom = new_bottom(20, [{{19, 19}, {19, 19, :red}}])
{actual_count, actual_bottom} = full_collapse(bottom)
assert actual_count == 1
assert {19,20} in Map.keys(actual_bottom)
end
def new_bottom(complete_row, xtras) do
(xtras ++
(1..10
|> Enum.map( fn x ->
{{x, complete_row}, {x,complete_row, :red}}
end)))
|> Map.new
end
end