done for the day

This commit is contained in:
Michael Freno
2025-11-15 02:47:26 -05:00
parent 472bf358f4
commit 3861a5f472
9 changed files with 2512 additions and 0 deletions

View File

@@ -0,0 +1,259 @@
local luaunit = require("testing.luaunit")
require("testing.loveStub")
local RoundedRect = require("modules.RoundedRect")
TestRoundedRect = {}
-- Test: getPoints with all corners rounded
function TestRoundedRect:testGetPointsAllCornersRounded()
local points = RoundedRect.getPoints(0, 0, 100, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
}, 10)
luaunit.assertNotNil(points)
luaunit.assertTrue(#points > 0)
luaunit.assertEquals(#points % 2, 0) -- Should be even (x,y pairs)
end
-- Test: getPoints with no rounded corners (zero radius)
function TestRoundedRect:testGetPointsNoRounding()
local points = RoundedRect.getPoints(0, 0, 100, 100, {
topLeft = 0,
topRight = 0,
bottomLeft = 0,
bottomRight = 0,
})
luaunit.assertNotNil(points)
luaunit.assertTrue(#points > 0)
end
-- Test: getPoints with asymmetric corners
function TestRoundedRect:testGetPointsAsymmetric()
local points = RoundedRect.getPoints(10, 10, 200, 150, {
topLeft = 5,
topRight = 15,
bottomLeft = 20,
bottomRight = 10,
})
luaunit.assertNotNil(points)
luaunit.assertTrue(#points > 0)
end
-- Test: getPoints with very large radius (should be clamped)
function TestRoundedRect:testGetPointsLargeRadius()
local points = RoundedRect.getPoints(0, 0, 100, 100, {
topLeft = 1000,
topRight = 1000,
bottomLeft = 1000,
bottomRight = 1000,
})
luaunit.assertNotNil(points)
luaunit.assertTrue(#points > 0)
end
-- Test: getPoints with custom segments
function TestRoundedRect:testGetPointsCustomSegments()
local points1 = RoundedRect.getPoints(0, 0, 100, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
}, 5)
local points2 = RoundedRect.getPoints(0, 0, 100, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
}, 20)
luaunit.assertNotNil(points1)
luaunit.assertNotNil(points2)
-- More segments should produce more points
luaunit.assertTrue(#points2 > #points1)
end
-- Test: getPoints with very small dimensions
function TestRoundedRect:testGetPointsSmallDimensions()
local points = RoundedRect.getPoints(0, 0, 10, 10, {
topLeft = 2,
topRight = 2,
bottomLeft = 2,
bottomRight = 2,
})
luaunit.assertNotNil(points)
luaunit.assertTrue(#points > 0)
end
-- Test: getPoints with negative position
function TestRoundedRect:testGetPointsNegativePosition()
local points = RoundedRect.getPoints(-50, -50, 100, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
})
luaunit.assertNotNil(points)
luaunit.assertTrue(#points > 0)
end
-- Test: getPoints with one corner rounded
function TestRoundedRect:testGetPointsOneCorner()
local points = RoundedRect.getPoints(0, 0, 100, 100, {
topLeft = 0,
topRight = 0,
bottomLeft = 0,
bottomRight = 15,
})
luaunit.assertNotNil(points)
luaunit.assertTrue(#points > 0)
end
-- Test: getPoints with fractional dimensions
function TestRoundedRect:testGetPointsFractional()
local points = RoundedRect.getPoints(0.5, 0.5, 100.7, 50.3, {
topLeft = 8.5,
topRight = 8.5,
bottomLeft = 8.5,
bottomRight = 8.5,
})
luaunit.assertNotNil(points)
luaunit.assertTrue(#points > 0)
end
-- Test: draw with rounded corners (fill mode)
function TestRoundedRect:testDrawFillWithRounding()
-- Should not error
RoundedRect.draw("fill", 0, 0, 100, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
})
luaunit.assertTrue(true)
end
-- Test: draw with no rounded corners (should use regular rectangle)
function TestRoundedRect:testDrawNoRounding()
-- Should use love.graphics.rectangle
RoundedRect.draw("fill", 0, 0, 100, 100, {
topLeft = 0,
topRight = 0,
bottomLeft = 0,
bottomRight = 0,
})
luaunit.assertTrue(true)
end
-- Test: draw with line mode
function TestRoundedRect:testDrawLineMode()
RoundedRect.draw("line", 0, 0, 100, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
})
luaunit.assertTrue(true)
end
-- Test: stencilFunction returns a function
function TestRoundedRect:testStencilFunction()
local stencil = RoundedRect.stencilFunction(0, 0, 100, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
})
luaunit.assertEquals(type(stencil), "function")
end
-- Test: stencilFunction can be called
function TestRoundedRect:testStencilFunctionExecute()
local stencil = RoundedRect.stencilFunction(0, 0, 100, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
})
-- Should not error when executed
stencil()
luaunit.assertTrue(true)
end
-- Test: getPoints with zero-width rectangle
function TestRoundedRect:testGetPointsZeroWidth()
local points = RoundedRect.getPoints(0, 0, 0, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
})
luaunit.assertNotNil(points)
end
-- Test: getPoints with zero-height rectangle
function TestRoundedRect:testGetPointsZeroHeight()
local points = RoundedRect.getPoints(0, 0, 100, 0, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
})
luaunit.assertNotNil(points)
end
-- Test: draw with mixed zero and non-zero corners
function TestRoundedRect:testDrawMixedCorners()
RoundedRect.draw("fill", 0, 0, 100, 100, {
topLeft = 0,
topRight = 15,
bottomLeft = 10,
bottomRight = 0,
})
luaunit.assertTrue(true)
end
-- Test: getPoints with very high segment count
function TestRoundedRect:testGetPointsHighSegments()
local points = RoundedRect.getPoints(0, 0, 100, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
}, 100)
luaunit.assertNotNil(points)
luaunit.assertTrue(#points > 0)
end
-- Test: getPoints with segment count of 1
function TestRoundedRect:testGetPointsOneSegment()
local points = RoundedRect.getPoints(0, 0, 100, 100, {
topLeft = 10,
topRight = 10,
bottomLeft = 10,
bottomRight = 10,
}, 1)
luaunit.assertNotNil(points)
luaunit.assertTrue(#points > 0)
end
if not _G.RUNNING_ALL_TESTS then
os.exit(luaunit.LuaUnit.run())
end