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
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
|
|
|