Module:Exponential search/testcases
Appearance
| This is the test cases page for the module Module:Exponential search. Results of the test cases. |
require[[strict]]
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:testFuncType()
self:assertThrows(search, "bad argument #1 to 'Exponential search' (function expected, got number)", nil, 5)
self:assertThrows(search, "bad argument #1 to 'Exponential search' (function expected, got string)", nil, 'foo')
self:assertThrows(search, "bad argument #1 to 'Exponential search' (function expected, got boolean)", nil, true)
self:assertThrows(search, "bad argument #1 to 'Exponential search' (function expected, got table)", nil, {})
self:assertThrows(search, "bad argument #1 to 'Exponential search' (function expected, got nil)", nil, nil)
end
function suite:testInitType()
self:assertThrows(search, "bad argument #2 to 'Exponential search' (number expected, got string)", nil, makeTest(0), 'foo')
self:assertThrows(search, "bad argument #2 to 'Exponential search' (number expected, got function)", nil, makeTest(0), makeTest(0))
self:assertThrows(search, "bad argument #2 to 'Exponential search' (number expected, got boolean)", nil, makeTest(0), true)
self:assertThrows(search, "bad argument #2 to 'Exponential search' (number expected, got table)", nil, makeTest(0), {})
self:assertThrows(search, "bad argument #2 to 'Exponential search' (number expected, got string)", nil, makeTest(1), 'foo')
end
function suite:testInitIntegerCheck()
self:assertThrows(
search, "invalid init value '0' detected in argument #2 to 'Exponential search' (init value must be a positive integer)",
nil, makeTest(0), 0
)
self:assertThrows(
search, "invalid init value '1.5' detected in argument #2 to 'Exponential search' (init value must be a positive integer)",
nil, makeTest(0), 1.5
)
self:assertThrows(
search, "invalid init value '-3' detected in argument #2 to 'Exponential search' (init value must be a positive integer)",
nil, makeTest(0), -3
)
self:assertThrows(
search, "invalid init value 'inf' detected in argument #2 to 'Exponential search' (init value must be a positive integer)",
nil, makeTest(0), math.huge
)
self:assertThrows(
search, "invalid init value '-nan' detected in argument #2 to 'Exponential search' (init value must be a positive integer)",
nil, 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(1234567890, search(makeTest(1234567890)))
end
function suite:testLargeInit()
self:assertEquals(3, search(makeTest(3), 1234567890))
end
return suite