BatterUp/src/test/testFielding.lua

58 lines
1.5 KiB
Lua

import = function() end
luaunit = require("luaunit")
luaunit.ORDER_ACTUAL_EXPECTED = false
utils = require("utils")
C = require("constants")
mocks = require("test/mocks")
playdate = mocks[1]
_f = require("fielding")
Fielding = _f[1]
---@return Fielding, number fielderCount
local function fieldersAtDefaultPositions()
local fielding = Fielding.new()
fielding:resetFielderPositions()
local fielderCount = 0
for _, fielder in pairs(fielding.fielders) do
fielder.x = fielder.target.x
fielder.y = fielder.target.y
fielderCount = fielderCount + 1
end
return fielding, fielderCount
end
---@param x number
---@param y number
---@param z number | nil
function fakeBall(x, y, z)
return {
x = x,
y = y,
z = z or 0,
heldBy = nil,
}
end
function testBallPickedUpByNearbyFielders()
local fielding, fielderCount = fieldersAtDefaultPositions()
luaunit.assertIs("table", type(fielding))
luaunit.assertIs("table", type(fielding.fielders))
luaunit.assertEquals(9, fielderCount)
local ball = fakeBall(-100, -100, -100)
fielding:updateFielderPositions(ball, 0.01)
luaunit.assertIsNil(ball.heldBy, "Ball should not be held by a fielder yet")
local secondBaseman = fielding.fielders.second
ball.x = secondBaseman.x
ball.y = secondBaseman.y
fielding:updateFielderPositions(ball, 0.01)
luaunit.assertIs(secondBaseman, ball.heldBy, "Ball should be held by the nearest fielder")
end
os.exit(luaunit.LuaUnit.run())