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.

70 lines
1.4 KiB

defmodule TetrisTest do
use ExUnit.Case
import Tetris
alias Tetris.{Brick}
test "try to move right, success" do
brick = Brick.new(%{location: {5,1}})
bottom = %{}
expected = brick |> Brick.right
actual = try_right(brick, bottom)
assert actual == expected
end
test "try to move right, failure returns original brick " do
brick = Brick.new(%{location: {8,1}})
bottom = %{}
actual = try_right(brick, bottom)
assert actual == brick
end
test "drops without merging" do
brick = Brick.new(%{location: {5,5}})
bottom = %{}
expected = %{
brick: Brick.down(brick),
bottom: %{},
score: 1,
game_over: false
}
actual = drop(brick, bottom, :red)
assert actual == expected
end
test "drops and merges" do
brick = Brick.new(%{location: {5,16}})
bottom = %{}
%{score: score, bottom: actual_bottom} =
Tetris.drop(brick, bottom, :red)
assert Map.get(actual_bottom, {7,20}) == {7,20, :red}
assert score == 0
end
test "drops and merges with collapse" do
brick = Brick.new(%{location: {5,16}})
bottom =
for x <- 1..10, y <- 17..20, x != 7 do
{{x,y}, {x,y, :red}}
end
|> Map.new
%{score: score, bottom: actual_bottom} =
Tetris.drop(brick, bottom, :red)
assert actual_bottom == %{}
assert score == 1600
end
end