231 lines
5.2 KiB
Lua
231 lines
5.2 KiB
Lua
package.path = package.path .. ";game/libs/?.lua;?.lua"
|
|
|
|
local luaunit = require("testing/luaunit")
|
|
require("testing/loveStub") -- Required to mock LOVE functions
|
|
local FlexLove = require("FlexLove")
|
|
|
|
local Positioning = FlexLove.enums.Positioning
|
|
local TextAlign = FlexLove.enums.TextAlign
|
|
local Color = FlexLove.Color
|
|
|
|
-- Create test cases
|
|
TestElementProperties = {}
|
|
|
|
function TestElementProperties:setUp()
|
|
self.GUI = FlexLove.GUI
|
|
end
|
|
|
|
function TestElementProperties:testBasicProperties()
|
|
local element = self.GUI.new({
|
|
x = 10,
|
|
y = 20,
|
|
w = 100,
|
|
h = 50,
|
|
z = 1,
|
|
positioning = Positioning.ABSOLUTE,
|
|
})
|
|
|
|
-- Test basic properties
|
|
luaunit.assertNotNil(element)
|
|
luaunit.assertEquals(element.x, 10)
|
|
luaunit.assertEquals(element.y, 20)
|
|
luaunit.assertEquals(element.z, 1)
|
|
luaunit.assertEquals(element.width, 100)
|
|
luaunit.assertEquals(element.height, 50)
|
|
luaunit.assertEquals(element.positioning, Positioning.ABSOLUTE)
|
|
end
|
|
|
|
function TestElementProperties:testPropertyModification()
|
|
local element = self.GUI.new({
|
|
x = 0,
|
|
y = 0,
|
|
w = 100,
|
|
h = 100,
|
|
})
|
|
|
|
-- Test property modification
|
|
luaunit.assertNotNil(element)
|
|
element.x = 50
|
|
element.y = 60
|
|
element.width = 200
|
|
element.height = 150
|
|
|
|
luaunit.assertEquals(element.x, 50)
|
|
luaunit.assertEquals(element.y, 60)
|
|
luaunit.assertEquals(element.width, 200)
|
|
luaunit.assertEquals(element.height, 150)
|
|
end
|
|
|
|
function TestElementProperties:testParentChildRelationship()
|
|
local parent = self.GUI.new({
|
|
x = 0,
|
|
y = 0,
|
|
w = 500,
|
|
h = 500,
|
|
})
|
|
|
|
local child = self.GUI.new({
|
|
parent = parent,
|
|
x = 10,
|
|
y = 10,
|
|
w = 100,
|
|
h = 100,
|
|
})
|
|
|
|
-- Test parent-child relationship
|
|
luaunit.assertNotNil(parent)
|
|
luaunit.assertNotNil(child)
|
|
luaunit.assertNotNil(parent.children)
|
|
luaunit.assertEquals(child.parent, parent)
|
|
luaunit.assertTrue(#parent.children == 1)
|
|
luaunit.assertEquals(parent.children[1], child)
|
|
end
|
|
|
|
function TestElementProperties:testBounds()
|
|
local element = self.GUI.new({
|
|
x = 10,
|
|
y = 20,
|
|
w = 100,
|
|
h = 50,
|
|
})
|
|
|
|
-- Test bounds calculation
|
|
luaunit.assertNotNil(element)
|
|
luaunit.assertNotNil(element.getBounds)
|
|
local bounds = element:getBounds()
|
|
luaunit.assertEquals(bounds.x, 10)
|
|
luaunit.assertEquals(bounds.y, 20)
|
|
luaunit.assertEquals(bounds.width, 100)
|
|
luaunit.assertEquals(bounds.height, 50)
|
|
end
|
|
|
|
function TestElementProperties:testZLayering()
|
|
local parent = self.GUI.new({
|
|
x = 0,
|
|
y = 0,
|
|
w = 500,
|
|
h = 500,
|
|
})
|
|
|
|
local child1 = self.GUI.new({
|
|
parent = parent,
|
|
x = 0,
|
|
y = 0,
|
|
w = 100,
|
|
h = 100,
|
|
z = 1,
|
|
})
|
|
|
|
local child2 = self.GUI.new({
|
|
parent = parent,
|
|
x = 0,
|
|
y = 0,
|
|
w = 100,
|
|
h = 100,
|
|
z = 2,
|
|
})
|
|
|
|
-- Test z ordering
|
|
luaunit.assertNotNil(parent)
|
|
luaunit.assertNotNil(child1)
|
|
luaunit.assertNotNil(child2)
|
|
luaunit.assertNotNil(child1.z)
|
|
luaunit.assertNotNil(child2.z)
|
|
luaunit.assertTrue(child1.z < child2.z)
|
|
end
|
|
|
|
function TestElementProperties:testColors()
|
|
local element = self.GUI.new({
|
|
x = 0,
|
|
y = 0,
|
|
w = 100,
|
|
h = 100,
|
|
background = Color.new(1, 0, 0, 1), -- Red
|
|
textColor = Color.new(0, 1, 0, 1), -- Green
|
|
borderColor = Color.new(0, 0, 1, 1), -- Blue
|
|
})
|
|
|
|
-- Test color assignments
|
|
luaunit.assertNotNil(element.background)
|
|
luaunit.assertEquals(element.background.r, 1)
|
|
luaunit.assertEquals(element.background.g, 0)
|
|
luaunit.assertEquals(element.background.b, 0)
|
|
luaunit.assertEquals(element.background.a, 1)
|
|
|
|
luaunit.assertNotNil(element.textColor)
|
|
luaunit.assertEquals(element.textColor.r, 0)
|
|
luaunit.assertEquals(element.textColor.g, 1)
|
|
luaunit.assertEquals(element.textColor.b, 0)
|
|
luaunit.assertEquals(element.textColor.a, 1)
|
|
|
|
luaunit.assertNotNil(element.borderColor)
|
|
luaunit.assertEquals(element.borderColor.r, 0)
|
|
luaunit.assertEquals(element.borderColor.g, 0)
|
|
luaunit.assertEquals(element.borderColor.b, 1)
|
|
luaunit.assertEquals(element.borderColor.a, 1)
|
|
end
|
|
|
|
function TestElementProperties:testText()
|
|
local element = self.GUI.new({
|
|
x = 0,
|
|
y = 0,
|
|
w = 200,
|
|
h = 100,
|
|
text = "Test Text",
|
|
textSize = 16,
|
|
textAlign = TextAlign.CENTER,
|
|
})
|
|
|
|
-- Test text properties
|
|
luaunit.assertNotNil(element)
|
|
luaunit.assertEquals(element.text, "Test Text")
|
|
luaunit.assertEquals(element.textSize, 16)
|
|
luaunit.assertEquals(element.textAlign, TextAlign.CENTER)
|
|
|
|
-- Test text update
|
|
element:updateText("New Text", true)
|
|
luaunit.assertEquals(element.text, "New Text")
|
|
end
|
|
|
|
function TestElementProperties:testOpacity()
|
|
local element = self.GUI.new({
|
|
x = 0,
|
|
y = 0,
|
|
w = 100,
|
|
h = 100,
|
|
opacity = 0.5,
|
|
})
|
|
|
|
-- Test opacity property and updates
|
|
luaunit.assertNotNil(element)
|
|
luaunit.assertEquals(element.opacity, 0.5)
|
|
|
|
element:updateOpacity(0.8)
|
|
luaunit.assertEquals(element.opacity, 0.8)
|
|
end
|
|
|
|
function TestElementProperties:testBorder()
|
|
local element = self.GUI.new({
|
|
x = 0,
|
|
y = 0,
|
|
w = 100,
|
|
h = 100,
|
|
border = {
|
|
top = true,
|
|
right = true,
|
|
bottom = true,
|
|
left = true,
|
|
},
|
|
})
|
|
|
|
-- Test border configuration
|
|
luaunit.assertNotNil(element)
|
|
luaunit.assertTrue(element.border.top)
|
|
luaunit.assertTrue(element.border.right)
|
|
luaunit.assertTrue(element.border.bottom)
|
|
luaunit.assertTrue(element.border.left)
|
|
end
|
|
|
|
luaunit.LuaUnit.run()
|
|
|