feat: standardize v1.5.0 and consolidate stability fixes
This commit is contained in:
@@ -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
|
||||
-----------------
|
||||
|
||||
Reference in New Issue
Block a user