BatterUp/src/test/testFielding.lua

55 lines
1.6 KiB
Lua

require("test/setup")
require("ball")
---@return Fielding, Fielder someBaseman
local function fieldersAtDefaultPositions()
local fielding = Fielding.new()
fielding:resetFielderPositions()
local fielderCount = 0
for _, fielder in pairs(fielding.fielders) do
fielder.x = fielder.targets[#fielder.targets].x
fielder.y = fielder.targets[#fielder.targets].y
fielderCount = fielderCount + 1
end
return fielding, fielding.fielders.second
end
---@param x number
---@param y number
---@param z number | nil
local function ballAt(x, y, z)
local ball = Ball.new(playdate.graphics.animator)
ball.x = x
ball.y = y
ball.z = z
return ball
end
function testBallPickedUpByNearbyFielders()
local fielding, baseman = fieldersAtDefaultPositions()
local ball = ballAt(baseman.x, baseman.y, baseman.z)
fielding:updateFielderPositions(ball, 0.01)
luaunit.assertIs(baseman, ball.heldBy, "Ball should be held by the nearest fielder")
end
function testBallNotPickedUpByDistantFielders()
local fielding = fieldersAtDefaultPositions()
local ball = ballAt(-100, -100, -100)
fielding:updateFielderPositions(ball, 0.01)
luaunit.assertIsNil(ball.heldBy, "Ball should be too far for any fielders to pick up")
end
function testBallNotPickedUpWhenNotCatchable()
local fielding, baseman = fieldersAtDefaultPositions()
local ball = ballAt(baseman.x, baseman.y, baseman.z)
ball:markUncatchable()
fielding:updateFielderPositions(ball, 0.01)
luaunit.assertIsNil(ball.heldBy, "Ball should be held by the nearest fielder")
end
os.exit(luaunit.LuaUnit.run())