feat: standardize v1.5.0 and consolidate stability fixes

This commit is contained in:
Xurkon
2026-03-28 11:08:32 -05:00
parent 4c7a318de6
commit 59c33e9f9c
26 changed files with 942 additions and 771 deletions
-145
View File
@@ -164,148 +164,3 @@ function MessageHandlerFactory.New()
return handler
end
----- Tests -----
do
--? This is the tests for MessageHandlerFactory
local function RunMessageHandlerTests()
Questie:Debug(Questie.DEBUG_CRITICAL, " -- Running " .. Questie:Colorize("MessageHandlerFactory", "yellow") .. " tests --")
local testEvent = "EVENT_TEST"
--- Test simple usage
do
local MessageHandler = MessageHandlerFactory:New()
local returnedCount = 0
local incrementFunction = function()
returnedCount = returnedCount + 1
end
-- Add and fire
MessageHandler:RegisterRepeating(testEvent, incrementFunction)
MessageHandler:Fire(testEvent)
assert(returnedCount == 1, Questie:Colorize(" -- FAILED: Event was not fired", "red"))
-- Unregister and fire
MessageHandler:UnregisterRepeating(testEvent, incrementFunction)
MessageHandler:Fire(testEvent)
assert(returnedCount == 1, Questie:Colorize(" -- FAILED: Event was fired after unregistering", "red"))
-- Register two events and fire
MessageHandler:RegisterRepeating(testEvent, incrementFunction)
MessageHandler:RegisterRepeating(testEvent, incrementFunction)
MessageHandler:Fire(testEvent)
assert(returnedCount == 3, Questie:Colorize(" -- FAILED: Event was not fired twice", "red"))
-- Unregister all events and fire
MessageHandler:UnregisterAll(testEvent)
MessageHandler:Fire(testEvent)
assert(returnedCount == 3, Questie:Colorize(" -- FAILED: Event was fired after unregistering all", "red"))
-- Register once and fire
MessageHandler:RegisterOnce(testEvent, incrementFunction)
MessageHandler:Fire(testEvent)
MessageHandler:Fire(testEvent)
assert(returnedCount == 4, Questie:Colorize(" -- FAILED: Event was not fired once", "red"))
end
--- Test multiple registered events
do
local MessageHandler = MessageHandlerFactory:New()
local returnedCount = 0
local incrementFunction = function()
returnedCount = returnedCount + 1
end
local incrementFunction2 = function()
returnedCount = returnedCount + 1
end
local testEvent2 = "EVENT_TEST2"
MessageHandler:RegisterRepeating(testEvent, incrementFunction)
MessageHandler:RegisterRepeating(testEvent2, incrementFunction2)
MessageHandler:Fire(testEvent)
assert(returnedCount == 1, Questie:Colorize(" -- FAILED: Event 1 was not fired", "red"))
MessageHandler:Fire(testEvent2)
assert(returnedCount == 2, Questie:Colorize(" -- FAILED: Event 2 was not fired", "red"))
-- Unregister and fire
MessageHandler:UnregisterRepeating(testEvent, incrementFunction)
MessageHandler:Fire(testEvent)
assert(returnedCount == 2, Questie:Colorize(" -- FAILED: Event 1 was fired after unregistering", "red"))
MessageHandler:Fire(testEvent2)
assert(returnedCount == 3, Questie:Colorize(" -- FAILED: Event 2 was not fired", "red"))
MessageHandler:UnregisterRepeating(testEvent2, incrementFunction2)
MessageHandler:Fire(testEvent2)
assert(returnedCount == 3, Questie:Colorize(" -- FAILED: Event 2 was fired after unregistering", "red"))
end
--- Test return
do
local MessageHandler = MessageHandlerFactory:New()
local returnedCount = 0
local incrementReturnFunction = function()
returnedCount = returnedCount + 1
return returnedCount
end
-- Register mutliple events and fire
for _ = 1, 5 do
MessageHandler:RegisterRepeating(testEvent, incrementReturnFunction)
end
local retVal = MessageHandler:Fire(testEvent)
assert(retVal, Questie:Colorize(" -- FAILED: Return value was nil", "red"))
assert(retVal[1] == 1, Questie:Colorize(" -- FAILED: 1 Function value was not returned", "red"))
assert(retVal[2] == 2, Questie:Colorize(" -- FAILED: 2 Function value was not returned", "red"))
assert(retVal[3] == 3, Questie:Colorize(" -- FAILED: 3 Function value was not returned", "red"))
assert(retVal[4] == 4, Questie:Colorize(" -- FAILED: 4 Function value was not returned", "red"))
assert(retVal[5] == 5, Questie:Colorize(" -- FAILED: 5 Function value was not returned", "red"))
end
--- Test async and async return
do
local MessageHandler = MessageHandlerFactory:New()
local returnedCount = 0
local incrementReturnFunction = function()
returnedCount = returnedCount + 1
return returnedCount
end
-- Register mutliple events and fire
for _ = 1, 5 do
MessageHandler:RegisterRepeating(testEvent, incrementReturnFunction)
end
local routine = coroutine.create(
function()
MessageHandler:FireAsync(testEvent, 2)
assert(returnedCount == 5, Questie:Colorize(" -- FAILED: Event was not fired the correct amount of times", "red"))
end
)
local timer
timer = C_Timer.NewTicker(0, function()
local success, retVal = coroutine.resume(routine)
if retVal then
assert(retVal[1] == 1, Questie:Colorize(" -- FAILED: 1 Function value was not returned", "red"))
assert(retVal[2] == 2, Questie:Colorize(" -- FAILED: 2 Function value was not returned", "red"))
assert(retVal[3] == 3, Questie:Colorize(" -- FAILED: 3 Function value was not returned", "red"))
assert(retVal[4] == 4, Questie:Colorize(" -- FAILED: 4 Function value was not returned", "red"))
assert(retVal[5] == 5, Questie:Colorize(" -- FAILED: 5 Function value was not returned", "red"))
end
assert(success, Questie:Colorize(" -- FAILED: Coroutine failed", "red"), retVal)
-- Kill the timer when the coroutine is dead.
if (coroutine.status(routine) == "dead") then
Questie:Debug(Questie.DEBUG_CRITICAL, "- MessageHandlerFactory - |cFF00FF00SUCCESS!|r")
timer:Cancel()
end
end)
end
end
-- Run it after all files has been loaded
C_Timer.After(2, RunMessageHandlerTests)
end
-----------------