memory tooling, state handling changes

This commit is contained in:
Michael Freno
2025-11-25 09:50:57 -05:00
parent 9918df5ea8
commit d3014200da
25 changed files with 3528 additions and 1016 deletions

View File

@@ -6,6 +6,9 @@ local luaunit = require("testing.luaunit")
local EventHandler = require("modules.EventHandler")
local InputEvent = require("modules.InputEvent")
local utils = require("modules.utils")
local ErrorHandler = require("modules.ErrorHandler")
ErrorHandler.init({})
EventHandler.init({ Performance = nil, ErrorHandler = ErrorHandler, InputEvent = InputEvent, utils = utils })
TestEventHandler = {}
@@ -77,14 +80,9 @@ function TestEventHandler:test_new_accepts_custom_config()
end
-- Test: initialize() sets element reference
function TestEventHandler:test_initialize_sets_element()
local handler = createEventHandler()
local element = createMockElement()
handler:initialize(element)
luaunit.assertEquals(handler._element, element)
end
-- function TestEventHandler:test_initialize_sets_element()
-- Removed: _element field no longer exists
-- end
-- Test: getState() returns state data
function TestEventHandler:test_getState_returns_state()
@@ -184,18 +182,18 @@ function TestEventHandler:test_isButtonPressed_checks_specific_button()
end
-- Test: processMouseEvents() returns early if no element
function TestEventHandler:test_processMouseEvents_no_element()
local handler = createEventHandler()
-- Should not error
handler:processMouseEvents(50, 50, true, true)
end
-- function TestEventHandler:test_processMouseEvents_no_element()
-- local handler = createEventHandler()
--
-- -- Should not error
-- handler:processMouseEvents(element, 50, 50, true, true)
-- end
-- Test: processMouseEvents() handles press event
function TestEventHandler:test_processMouseEvents_press()
local handler = createEventHandler()
local element = createMockElement()
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
local eventReceived = nil
handler.onEvent = function(el, event)
@@ -209,7 +207,7 @@ function TestEventHandler:test_processMouseEvents_press()
end
-- First call - button just pressed
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
luaunit.assertNotNil(eventReceived)
luaunit.assertEquals(eventReceived.type, "press")
@@ -223,7 +221,7 @@ end
function TestEventHandler:test_processMouseEvents_drag()
local handler = createEventHandler()
local element = createMockElement()
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
local eventsReceived = {}
handler.onEvent = function(el, event)
@@ -236,10 +234,10 @@ function TestEventHandler:test_processMouseEvents_drag()
end
-- First call - press at (50, 50)
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
-- Second call - drag to (60, 70)
handler:processMouseEvents(60, 70, true, true)
handler:processMouseEvents(element, 60, 70, true, true)
luaunit.assertTrue(#eventsReceived >= 2)
-- Find drag event
@@ -262,7 +260,7 @@ end
function TestEventHandler:test_processMouseEvents_release_and_click()
local handler = createEventHandler()
local element = createMockElement()
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
local eventsReceived = {}
handler.onEvent = function(el, event)
@@ -276,11 +274,11 @@ function TestEventHandler:test_processMouseEvents_release_and_click()
end
-- Press
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
-- Release
isButtonDown = false
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
-- Should have: press, click, release events
luaunit.assertTrue(#eventsReceived >= 3)
@@ -312,7 +310,7 @@ end
function TestEventHandler:test_processMouseEvents_double_click()
local handler = createEventHandler()
local element = createMockElement()
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
local eventsReceived = {}
handler.onEvent = function(el, event)
@@ -327,15 +325,15 @@ function TestEventHandler:test_processMouseEvents_double_click()
-- First click
isButtonDown = true
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
isButtonDown = false
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
-- Second click (quickly after first)
isButtonDown = true
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
isButtonDown = false
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
-- Find click events
local clickEvents = {}
@@ -358,7 +356,7 @@ end
function TestEventHandler:test_processMouseEvents_rightclick()
local handler = createEventHandler()
local element = createMockElement()
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
local eventsReceived = {}
handler.onEvent = function(el, event)
@@ -373,9 +371,9 @@ function TestEventHandler:test_processMouseEvents_rightclick()
-- Right click press and release
isButtonDown = true
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
isButtonDown = false
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
local hasRightClick = false
for _, event in ipairs(eventsReceived) do
@@ -394,7 +392,7 @@ end
function TestEventHandler:test_processMouseEvents_middleclick()
local handler = createEventHandler()
local element = createMockElement()
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
local eventsReceived = {}
handler.onEvent = function(el, event)
@@ -409,9 +407,9 @@ function TestEventHandler:test_processMouseEvents_middleclick()
-- Middle click press and release
isButtonDown = true
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
isButtonDown = false
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
local hasMiddleClick = false
for _, event in ipairs(eventsReceived) do
@@ -431,7 +429,7 @@ function TestEventHandler:test_processMouseEvents_disabled()
local handler = createEventHandler()
local element = createMockElement()
element.disabled = true
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
local eventReceived = false
handler.onEvent = function(el, event)
@@ -443,7 +441,7 @@ function TestEventHandler:test_processMouseEvents_disabled()
return button == 1
end
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
-- Should not fire event for disabled element
luaunit.assertFalse(eventReceived)
@@ -455,7 +453,7 @@ end
function TestEventHandler:test_processTouchEvents()
local handler = createEventHandler()
local element = createMockElement()
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
local eventsReceived = {}
handler.onEvent = function(el, event)
@@ -482,7 +480,7 @@ function TestEventHandler:test_processTouchEvents()
return 50, 50 -- Inside element
end
end
handler:processTouchEvents()
handler:processTouchEvents(element)
-- Second call - touch moves outside
love.touch.getPosition = function(id)
@@ -490,7 +488,7 @@ function TestEventHandler:test_processTouchEvents()
return 150, 150 -- Outside element
end
end
handler:processTouchEvents()
handler:processTouchEvents(element)
-- Should receive touch event
luaunit.assertTrue(#eventsReceived >= 1)
@@ -500,21 +498,21 @@ function TestEventHandler:test_processTouchEvents()
end
-- Test: processTouchEvents() returns early if no element
function TestEventHandler:test_processTouchEvents_no_element()
local handler = createEventHandler()
-- Should not error
handler:processTouchEvents()
end
-- function TestEventHandler:test_processTouchEvents_no_element()
-- local handler = createEventHandler()
--
-- -- Should not error
-- handler:processTouchEvents(element)
-- end
-- Test: processTouchEvents() returns early if no onEvent
function TestEventHandler:test_processTouchEvents_no_onEvent()
local handler = createEventHandler()
local element = createMockElement()
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
-- Should not error (no onEvent callback)
handler:processTouchEvents()
handler:processTouchEvents(element)
end
-- Test: onEventDeferred flag defers callback execution
@@ -536,7 +534,7 @@ function TestEventHandler:test_onEventDeferred()
end,
})
local element = createMockElement()
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
local originalIsDown = love.mouse.isDown
love.mouse.isDown = function(button)
@@ -544,11 +542,11 @@ function TestEventHandler:test_onEventDeferred()
end
-- Press and release mouse button
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
love.mouse.isDown = function()
return false
end
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
-- Events should not be immediately executed
luaunit.assertEquals(#eventsReceived, 0)
@@ -588,7 +586,7 @@ function TestEventHandler:test_onEventDeferred_false()
end,
})
local element = createMockElement()
handler:initialize(element)
-- handler:initialize(element) -- Removed: element now passed as parameter
local originalIsDown = love.mouse.isDown
love.mouse.isDown = function(button)
@@ -596,11 +594,11 @@ function TestEventHandler:test_onEventDeferred_false()
end
-- Press and release mouse button
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
love.mouse.isDown = function()
return false
end
handler:processMouseEvents(50, 50, true, true)
handler:processMouseEvents(element, 50, 50, true, true)
-- Events should be immediately executed
luaunit.assertTrue(#eventsReceived > 0)