Module:Exponential search/testcases: Difference between revisions
Appearance
Content deleted Content added
more tests |
simplify the test functions - no need to bother with arrays |
||
Line 3: | Line 3: | ||
local suite = ScribuntoUnit:new() |
local suite = ScribuntoUnit:new() |
||
local function |
local function makeTest(n) |
||
local array = {} |
|||
for i = 1, len do |
|||
array[i] = true |
|||
end |
|||
return function (i) |
return function (i) |
||
return |
return i <= n |
||
end |
end |
||
end |
end |
||
local arrayTests = {} |
|||
setmetatable(arrayTests, { |
|||
__index = function (t, key) |
|||
local func = makeArrayTest(key) |
|||
arrayTests[key] = func |
|||
return func |
|||
end |
|||
}) |
|||
function suite:assertError(func, ...) |
function suite:assertError(func, ...) |
||
Line 42: | Line 29: | ||
function suite:testInitType() |
function suite:testInitType() |
||
self:assertError(search, |
self:assertError(search, makeTest(0), 'foo') |
||
self:assertError(search, |
self:assertError(search, makeTest(0), makeTest(0)) |
||
self:assertError(search, |
self:assertError(search, makeTest(0), true) |
||
self:assertError(search, |
self:assertError(search, makeTest(0), {}) |
||
self:assertError(search, |
self:assertError(search, makeTest(1), 'foo') |
||
end |
end |
||
Line 52: | Line 39: | ||
self:assertErrorMsg( |
self:assertErrorMsg( |
||
"invalid init value '0' detected in argument #2 to 'Exponential search' (init values must be a positive integer)", |
"invalid init value '0' detected in argument #2 to 'Exponential search' (init values must be a positive integer)", |
||
search, |
search, makeTest(0), 0 |
||
) |
) |
||
self:assertErrorMsg( |
self:assertErrorMsg( |
||
"invalid init value '1.5' detected in argument #2 to 'Exponential search' (init values must be a positive integer)", |
"invalid init value '1.5' detected in argument #2 to 'Exponential search' (init values must be a positive integer)", |
||
search, |
search, makeTest(0), 1.5 |
||
) |
) |
||
self:assertErrorMsg( |
self:assertErrorMsg( |
||
"invalid init value '-3' detected in argument #2 to 'Exponential search' (init values must be a positive integer)", |
"invalid init value '-3' detected in argument #2 to 'Exponential search' (init values must be a positive integer)", |
||
search, |
search, makeTest(0), -3 |
||
) |
) |
||
self:assertErrorMsg( |
self:assertErrorMsg( |
||
"invalid init value 'inf' detected in argument #2 to 'Exponential search' (init values must be a positive integer)", |
"invalid init value 'inf' detected in argument #2 to 'Exponential search' (init values must be a positive integer)", |
||
search, |
search, makeTest(0), math.huge |
||
) |
) |
||
self:assertErrorMsg( |
self:assertErrorMsg( |
||
"invalid init value '-nan' detected in argument #2 to 'Exponential search' (init values must be a positive integer)", |
"invalid init value '-nan' detected in argument #2 to 'Exponential search' (init values must be a positive integer)", |
||
search, |
search, makeTest(0), 0/0 |
||
) |
) |
||
end |
end |
||
function suite:testKeyNotFound() |
function suite:testKeyNotFound() |
||
self:assertEquals(nil, search( |
self:assertEquals(nil, search(makeTest(0))) |
||
end |
end |
||
function suite:testKeyNotFoundInit() |
function suite:testKeyNotFoundInit() |
||
self:assertEquals(nil, search( |
self:assertEquals(nil, search(makeTest(0), 5)) |
||
end |
end |
||
function suite:test1() |
function suite:test1() |
||
self:assertEquals(1, search( |
self:assertEquals(1, search(makeTest(1))) |
||
end |
end |
||
function suite:test1Init1() |
function suite:test1Init1() |
||
self:assertEquals(1, search( |
self:assertEquals(1, search(makeTest(1), 1)) |
||
end |
end |
||
function suite:test1Init2() |
function suite:test1Init2() |
||
self:assertEquals(1, search( |
self:assertEquals(1, search(makeTest(1), 2)) |
||
end |
end |
||
function suite:test1Init3() |
function suite:test1Init3() |
||
self:assertEquals(1, search( |
self:assertEquals(1, search(makeTest(1), 3)) |
||
end |
end |
||
function suite:test2() |
function suite:test2() |
||
self:assertEquals(2, search( |
self:assertEquals(2, search(makeTest(2))) |
||
end |
end |
||
function suite:test2Init1() |
function suite:test2Init1() |
||
self:assertEquals(2, search( |
self:assertEquals(2, search(makeTest(2), 1)) |
||
end |
end |
||
function suite:test2Init2() |
function suite:test2Init2() |
||
self:assertEquals(2, search( |
self:assertEquals(2, search(makeTest(2), 2)) |
||
end |
end |
||
function suite:test2Init3() |
function suite:test2Init3() |
||
self:assertEquals(2, search( |
self:assertEquals(2, search(makeTest(2), 3)) |
||
end |
end |
||
function suite:test3() |
function suite:test3() |
||
self:assertEquals(3, search( |
self:assertEquals(3, search(makeTest(3))) |
||
end |
end |
||
function suite:test3Init1() |
function suite:test3Init1() |
||
self:assertEquals(3, search( |
self:assertEquals(3, search(makeTest(3), 1)) |
||
end |
end |
||
function suite:test3Init2() |
function suite:test3Init2() |
||
self:assertEquals(3, search( |
self:assertEquals(3, search(makeTest(3), 2)) |
||
end |
end |
||
function suite:test3Init3() |
function suite:test3Init3() |
||
self:assertEquals(3, search( |
self:assertEquals(3, search(makeTest(3), 3)) |
||
end |
end |
||
function suite:testLargeArray() |
function suite:testLargeArray() |
||
self:assertEquals(12345, search( |
self:assertEquals(12345, search(makeTest(12345))) |
||
end |
end |
||
function suite:testLargeInit() |
function suite:testLargeInit() |
||
self:assertEquals(3, search( |
self:assertEquals(3, search(makeTest(3), 12345)) |
||
end |
end |
||
Revision as of 13:27, 27 February 2015
![]() | This is the test cases page for the module Module:Exponential search. Results of the test cases. |
local search = require('Module:Exponential search')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()
local function makeTest(n)
return function (i)
return i <= n
end
end
function suite:assertError(func, ...)
local success, ret = pcall(func, ...)
self:assertFalse(success)
return ret
end
function suite:assertErrorMsg(msg, func, ...)
local ret = self:assertError(func, ...)
self:assertStringContains(msg, ret, true)
end
function suite:testFuncType()
self:assertError(search, 5)
self:assertError(search, 'foo')
self:assertError(search, true)
self:assertError(search, {})
self:assertError(search, nil)
end
function suite:testInitType()
self:assertError(search, makeTest(0), 'foo')
self:assertError(search, makeTest(0), makeTest(0))
self:assertError(search, makeTest(0), true)
self:assertError(search, makeTest(0), {})
self:assertError(search, makeTest(1), 'foo')
end
function suite:testInitIntegerCheck()
self:assertErrorMsg(
"invalid init value '0' detected in argument #2 to 'Exponential search' (init values must be a positive integer)",
search, makeTest(0), 0
)
self:assertErrorMsg(
"invalid init value '1.5' detected in argument #2 to 'Exponential search' (init values must be a positive integer)",
search, makeTest(0), 1.5
)
self:assertErrorMsg(
"invalid init value '-3' detected in argument #2 to 'Exponential search' (init values must be a positive integer)",
search, makeTest(0), -3
)
self:assertErrorMsg(
"invalid init value 'inf' detected in argument #2 to 'Exponential search' (init values must be a positive integer)",
search, makeTest(0), math.huge
)
self:assertErrorMsg(
"invalid init value '-nan' detected in argument #2 to 'Exponential search' (init values must be a positive integer)",
search, makeTest(0), 0/0
)
end
function suite:testKeyNotFound()
self:assertEquals(nil, search(makeTest(0)))
end
function suite:testKeyNotFoundInit()
self:assertEquals(nil, search(makeTest(0), 5))
end
function suite:test1()
self:assertEquals(1, search(makeTest(1)))
end
function suite:test1Init1()
self:assertEquals(1, search(makeTest(1), 1))
end
function suite:test1Init2()
self:assertEquals(1, search(makeTest(1), 2))
end
function suite:test1Init3()
self:assertEquals(1, search(makeTest(1), 3))
end
function suite:test2()
self:assertEquals(2, search(makeTest(2)))
end
function suite:test2Init1()
self:assertEquals(2, search(makeTest(2), 1))
end
function suite:test2Init2()
self:assertEquals(2, search(makeTest(2), 2))
end
function suite:test2Init3()
self:assertEquals(2, search(makeTest(2), 3))
end
function suite:test3()
self:assertEquals(3, search(makeTest(3)))
end
function suite:test3Init1()
self:assertEquals(3, search(makeTest(3), 1))
end
function suite:test3Init2()
self:assertEquals(3, search(makeTest(3), 2))
end
function suite:test3Init3()
self:assertEquals(3, search(makeTest(3), 3))
end
function suite:testLargeArray()
self:assertEquals(12345, search(makeTest(12345)))
end
function suite:testLargeInit()
self:assertEquals(3, search(makeTest(3), 12345))
end
return suite