302 lines
6.7 KiB
Lua
302 lines
6.7 KiB
Lua
return function()
|
|
local ErrorQueue = require(script.Parent.ErrorQueue)
|
|
local CorePackages = game:GetService("CorePackages")
|
|
|
|
local tutils = require(CorePackages.Packages.tutils)
|
|
|
|
local errorsToAdd = {
|
|
[1] = {
|
|
key = "test",
|
|
value = 2.33,
|
|
},
|
|
[2] = {
|
|
key = "test",
|
|
value = 2,
|
|
},
|
|
[3] = {
|
|
key = "test",
|
|
value = 3.14,
|
|
},
|
|
[4] = {
|
|
key = "test2",
|
|
value = 123,
|
|
},
|
|
[5] = {
|
|
key = "test2",
|
|
value = 456,
|
|
},
|
|
[6] = {
|
|
key = "test3",
|
|
value = "something",
|
|
},
|
|
}
|
|
|
|
describe("queueErrorLimit", function()
|
|
it("should report errors correctly when the total error limit is reached", function()
|
|
local expectedErrorsReported = {
|
|
["test"] = {
|
|
data = 2.33,
|
|
count = 3,
|
|
},
|
|
["test2"] = {
|
|
data = 123,
|
|
count = 2,
|
|
},
|
|
["test3"] = {
|
|
data = "something",
|
|
count = 1,
|
|
},
|
|
}
|
|
|
|
local errorsReported = {}
|
|
local reportCount = 0
|
|
local reportMethod = function(errorKey, errorData, errorCount)
|
|
reportCount = reportCount + 1
|
|
errorsReported[errorKey] = {
|
|
data = errorData,
|
|
count = errorCount,
|
|
}
|
|
end
|
|
|
|
local errorQueue = ErrorQueue.new(reportMethod, {
|
|
queueErrorLimit = 6,
|
|
})
|
|
|
|
for _, error in ipairs(errorsToAdd) do
|
|
errorQueue:addError(error.key, error.value)
|
|
end
|
|
|
|
expect(reportCount).to.equal(3)
|
|
for errorKey, expectedError in pairs(expectedErrorsReported) do
|
|
expect(tutils.deepEqual(expectedError, errorsReported[errorKey])).to.equal(true)
|
|
end
|
|
end)
|
|
|
|
it("should not report errors before the total error limit is reached", function()
|
|
local errorsReported = {}
|
|
local reportCount = 0
|
|
local reportMethod = function(errorKey, errorData, errorCount)
|
|
reportCount = reportCount + 1
|
|
errorsReported[errorKey] = {
|
|
data = errorData,
|
|
count = errorCount,
|
|
}
|
|
end
|
|
|
|
local errorQueue = ErrorQueue.new(reportMethod, {
|
|
queueErrorLimit = 6,
|
|
})
|
|
|
|
for index = 1, 5 do
|
|
local error = errorsToAdd[index]
|
|
errorQueue:addError(error.key, error.value)
|
|
end
|
|
|
|
expect(reportCount).to.equal(0)
|
|
expect(tutils.deepEqual(errorsReported, {})).to.equal(true)
|
|
end)
|
|
end)
|
|
|
|
describe("queueKeyLimit", function()
|
|
it("should report errors correctly when the total key limit is reached", function()
|
|
local expectedErrorsReported = {
|
|
["test"] = {
|
|
data = 2.33,
|
|
count = 3,
|
|
},
|
|
["test2"] = {
|
|
data = 123,
|
|
count = 2,
|
|
},
|
|
["test3"] = {
|
|
data = "something",
|
|
count = 1,
|
|
},
|
|
}
|
|
|
|
local errorsReported = {}
|
|
local reportCount = 0
|
|
local reportMethod = function(errorKey, errorData, errorCount)
|
|
reportCount = reportCount + 1
|
|
errorsReported[errorKey] = {
|
|
data = errorData,
|
|
count = errorCount,
|
|
}
|
|
end
|
|
|
|
local errorQueue = ErrorQueue.new(reportMethod, {
|
|
queueKeyLimit = 3,
|
|
queueErrorLimit = 100,
|
|
})
|
|
|
|
for _, error in ipairs(errorsToAdd) do
|
|
errorQueue:addError(error.key, error.value)
|
|
end
|
|
|
|
expect(reportCount).to.equal(3)
|
|
for errorKey, expectedError in pairs(expectedErrorsReported) do
|
|
expect(tutils.deepEqual(expectedError, errorsReported[errorKey])).to.equal(true)
|
|
end
|
|
end)
|
|
|
|
it("should not report errors before the total key limit is reached", function()
|
|
local errorsReported = {}
|
|
local reportCount = 0
|
|
local reportMethod = function(errorKey, errorData, errorCount)
|
|
reportCount = reportCount + 1
|
|
errorsReported[errorKey] = {
|
|
data = errorData,
|
|
count = errorCount,
|
|
}
|
|
end
|
|
|
|
local errorQueue = ErrorQueue.new(reportMethod, {
|
|
queueKeyLimit = 4,
|
|
queueErrorLimit = 100,
|
|
})
|
|
|
|
for _, error in ipairs(errorsToAdd) do
|
|
errorQueue:addError(error.key, error.value)
|
|
end
|
|
|
|
expect(reportCount).to.equal(0)
|
|
expect(tutils.deepEqual(errorsReported, {})).to.equal(true)
|
|
end)
|
|
end)
|
|
|
|
describe("queueTimeLimit", function()
|
|
HACK_NO_XPCALL()
|
|
|
|
it("should report errors correctly when the total time limit is reached", function()
|
|
local expectedErrorsReported = {
|
|
["test"] = {
|
|
data = 2.33,
|
|
count = 3,
|
|
},
|
|
["test2"] = {
|
|
data = 123,
|
|
count = 2,
|
|
},
|
|
["test3"] = {
|
|
data = "something",
|
|
count = 1,
|
|
},
|
|
}
|
|
|
|
local errorsReported = {}
|
|
local reportCount = 0
|
|
local reportMethod = function(errorKey, errorData, errorCount)
|
|
reportCount = reportCount + 1
|
|
errorsReported[errorKey] = {
|
|
data = errorData,
|
|
count = errorCount,
|
|
}
|
|
end
|
|
|
|
local errorQueue = ErrorQueue.new(reportMethod, {
|
|
queueTimeLimit = 0.5,
|
|
queueErrorLimit = 100,
|
|
queueKeyLimit = 100,
|
|
})
|
|
|
|
errorQueue:startTimer()
|
|
|
|
for _, error in ipairs(errorsToAdd) do
|
|
errorQueue:addError(error.key, error.value)
|
|
end
|
|
|
|
errorQueue:_onRenderStep(0.5)
|
|
|
|
expect(reportCount).to.equal(3)
|
|
for errorKey, expectedError in pairs(expectedErrorsReported) do
|
|
expect(tutils.deepEqual(expectedError, errorsReported[errorKey])).to.equal(true)
|
|
end
|
|
|
|
errorQueue:stopTimer()
|
|
end)
|
|
|
|
it("should not report errors before the total time limit is reached", function()
|
|
local errorsReported = {}
|
|
local reportCount = 0
|
|
local reportMethod = function(errorKey, errorData, errorCount)
|
|
reportCount = reportCount + 1
|
|
errorsReported[errorKey] = {
|
|
data = errorData,
|
|
count = errorCount,
|
|
}
|
|
end
|
|
|
|
local errorQueue = ErrorQueue.new(reportMethod, {
|
|
queueTimeLimit = 2,
|
|
queueErrorLimit = 100,
|
|
queueKeyLimit = 100,
|
|
})
|
|
|
|
errorQueue:startTimer()
|
|
|
|
for _, error in ipairs(errorsToAdd) do
|
|
errorQueue:addError(error.key, error.value)
|
|
end
|
|
|
|
errorQueue:_onRenderStep(1)
|
|
|
|
expect(reportCount).to.equal(0)
|
|
expect(tutils.deepEqual(errorsReported, {})).to.equal(true)
|
|
|
|
errorQueue:stopTimer()
|
|
end)
|
|
end)
|
|
|
|
describe("reportAllErrors", function()
|
|
it("should report all errors correctly when called", function()
|
|
local expectedErrorsReported = {
|
|
["test"] = {
|
|
data = 2.33,
|
|
count = 3,
|
|
},
|
|
["test2"] = {
|
|
data = 123,
|
|
count = 2,
|
|
},
|
|
["test3"] = {
|
|
data = "something",
|
|
count = 1,
|
|
},
|
|
}
|
|
|
|
local errorsReported = {}
|
|
local reportCount = 0
|
|
local reportMethod = function(errorKey, errorData, errorCount)
|
|
reportCount = reportCount + 1
|
|
errorsReported[errorKey] = {
|
|
data = errorData,
|
|
count = errorCount,
|
|
}
|
|
end
|
|
|
|
local errorQueue = ErrorQueue.new(reportMethod, {
|
|
queueTimeLimit = 100,
|
|
queueErrorLimit = 100,
|
|
queueKeyLimit = 100,
|
|
})
|
|
|
|
errorQueue:startTimer()
|
|
|
|
for _, error in ipairs(errorsToAdd) do
|
|
errorQueue:addError(error.key, error.value)
|
|
end
|
|
|
|
expect(reportCount).to.equal(0)
|
|
|
|
errorQueue:reportAllErrors()
|
|
|
|
expect(reportCount).to.equal(3)
|
|
for errorKey, expectedError in pairs(expectedErrorsReported) do
|
|
expect(tutils.deepEqual(expectedError, errorsReported[errorKey])).to.equal(true)
|
|
end
|
|
|
|
errorQueue:stopTimer()
|
|
end)
|
|
end)
|
|
end
|