Added check for living survivors to game level detection
This commit is contained in:
parent
c069557f17
commit
542ffbc826
|
|
@ -31,6 +31,7 @@ defmodule ZombieSurvivor.Game do
|
||||||
@spec level(Game.t()) :: ZombieSurvivor.level()
|
@spec level(Game.t()) :: ZombieSurvivor.level()
|
||||||
def level(game) do
|
def level(game) do
|
||||||
game.survivors
|
game.survivors
|
||||||
|
|> Enum.reject(fn {_, s} -> Survivor.dead?(s) end)
|
||||||
|> Enum.reduce(0, fn {_, s}, acc -> max(s.experience, acc) end)
|
|> Enum.reduce(0, fn {_, s}, acc -> max(s.experience, acc) end)
|
||||||
|> ZombieSurvivor.level()
|
|> ZombieSurvivor.level()
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -100,5 +100,31 @@ defmodule GameTest do
|
||||||
|
|
||||||
assert Game.level(g) == :red
|
assert Game.level(g) == :red
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "returns the level of the highest levelled living survivor" do
|
||||||
|
g =
|
||||||
|
Game.new()
|
||||||
|
|> Game.add_survivor(@new_survivor)
|
||||||
|
|
||||||
|
assert Game.level(g) == :blue
|
||||||
|
|
||||||
|
g =
|
||||||
|
g
|
||||||
|
|> Game.add_survivor(Survivor.new(name: "Eric", experience: 10))
|
||||||
|
|
||||||
|
assert Game.level(g) == :yellow
|
||||||
|
|
||||||
|
g =
|
||||||
|
g
|
||||||
|
|> Game.add_survivor(Survivor.new(name: "Jack", experience: 20, wounds: 2))
|
||||||
|
|
||||||
|
assert Game.level(g) == :yellow
|
||||||
|
|
||||||
|
g =
|
||||||
|
g
|
||||||
|
|> Game.add_survivor(Survivor.new(name: "Liru", experience: 1_000_000, wounds: 2))
|
||||||
|
|
||||||
|
assert Game.level(g) == :yellow
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue