immediate mode state management cleanup
This commit is contained in:
@@ -119,8 +119,9 @@ function TestStateManager:test_updateState_updatesFrameNumber()
|
||||
|
||||
StateManager.updateState("test-element", { hover = true })
|
||||
|
||||
-- State should exist and be accessible
|
||||
local state = StateManager.getState("test-element")
|
||||
luaunit.assertEquals(state.lastUpdateFrame, currentFrame)
|
||||
luaunit.assertNotNil(state)
|
||||
end
|
||||
|
||||
-- ====================
|
||||
@@ -251,57 +252,46 @@ function TestStateManager:test_isActive_returnsTrueWhenActive()
|
||||
end
|
||||
|
||||
-- ====================
|
||||
-- State Change Events Tests
|
||||
-- ID Generation Tests
|
||||
-- ====================
|
||||
|
||||
function TestStateManager:test_subscribe_receivesStateChangeEvents()
|
||||
local callbackInvoked = false
|
||||
local receivedId = nil
|
||||
local receivedProperty = nil
|
||||
local receivedOldValue = nil
|
||||
local receivedNewValue = nil
|
||||
function TestStateManager:test_generateID_createsUniqueID()
|
||||
local id1 = StateManager.generateID({ test = "value1" })
|
||||
local id2 = StateManager.generateID({ test = "value2" })
|
||||
|
||||
local callback = function(id, property, oldValue, newValue)
|
||||
callbackInvoked = true
|
||||
receivedId = id
|
||||
receivedProperty = property
|
||||
receivedOldValue = oldValue
|
||||
receivedNewValue = newValue
|
||||
end
|
||||
|
||||
StateManager.subscribe("test-element", callback)
|
||||
StateManager.updateState("test-element", { hover = true })
|
||||
|
||||
luaunit.assertTrue(callbackInvoked)
|
||||
luaunit.assertEquals(receivedId, "test-element")
|
||||
luaunit.assertEquals(receivedProperty, "hover")
|
||||
luaunit.assertEquals(receivedOldValue, false)
|
||||
luaunit.assertEquals(receivedNewValue, true)
|
||||
luaunit.assertNotNil(id1)
|
||||
luaunit.assertNotNil(id2)
|
||||
luaunit.assertTrue(type(id1) == "string")
|
||||
luaunit.assertTrue(type(id2) == "string")
|
||||
end
|
||||
|
||||
function TestStateManager:test_subscribe_multipleListeners()
|
||||
local callback1Invoked = false
|
||||
local callback2Invoked = false
|
||||
function TestStateManager:test_generateID_withoutProps()
|
||||
local id = StateManager.generateID(nil)
|
||||
|
||||
StateManager.subscribe("test-element", function() callback1Invoked = true end)
|
||||
StateManager.subscribe("test-element", function() callback2Invoked = true end)
|
||||
|
||||
StateManager.updateState("test-element", { hover = true })
|
||||
|
||||
luaunit.assertTrue(callback1Invoked)
|
||||
luaunit.assertTrue(callback2Invoked)
|
||||
luaunit.assertNotNil(id)
|
||||
luaunit.assertTrue(type(id) == "string")
|
||||
end
|
||||
|
||||
function TestStateManager:test_unsubscribe_removesListener()
|
||||
local callbackInvoked = false
|
||||
local callback = function() callbackInvoked = true end
|
||||
-- ====================
|
||||
-- Scroll Position Tests
|
||||
-- ====================
|
||||
|
||||
function TestStateManager:test_scrollPosition_initialization()
|
||||
local state = StateManager.getState("test-element")
|
||||
|
||||
StateManager.subscribe("test-element", callback)
|
||||
StateManager.unsubscribe("test-element", callback)
|
||||
luaunit.assertEquals(state.scrollX, 0)
|
||||
luaunit.assertEquals(state.scrollY, 0)
|
||||
end
|
||||
|
||||
function TestStateManager:test_scrollPosition_updates()
|
||||
StateManager.updateState("test-element", {
|
||||
scrollX = 100,
|
||||
scrollY = 200,
|
||||
})
|
||||
|
||||
StateManager.updateState("test-element", { hover = true })
|
||||
|
||||
luaunit.assertFalse(callbackInvoked)
|
||||
local state = StateManager.getState("test-element")
|
||||
luaunit.assertEquals(state.scrollX, 100)
|
||||
luaunit.assertEquals(state.scrollY, 200)
|
||||
end
|
||||
|
||||
-- ====================
|
||||
|
||||
Reference in New Issue
Block a user