Jump to content

Module:Exponential search/testcases: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
create
 
various fixes
Line 23: Line 23:
function suite:assertErrorMsg(msg, func, ...)
function suite:assertErrorMsg(msg, func, ...)
local ret = self:assertError(func, ...)
local ret = self:assertError(func, ...)
self:assertStringContains(ret, msg)
self:assertStringContains(msg, ret, true)
end
end


function suite:testTypeChecks()
function suite:testFuncType()
self:assertError(search, 5)
self:assertError(search, 5)
self:assertError(search, 'foo')
self:assertError(search, 'foo')
Line 32: Line 32:
self:assertError(search, {})
self:assertError(search, {})
self:assertError(search, nil)
self:assertError(search, nil)
end

function suite:testInitType()
self:assertError(search, zeroTest, 'foo')
self:assertError(search, zeroTest, 'foo')
self:assertError(search, zeroTest, zeroTest)
self:assertError(search, zeroTest, zeroTest)
Line 38: Line 41:
end
end
function suite:testInitChecks()
function suite:testInitIntegerCheck()
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)",
Line 52: Line 55:
)
)
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, zeroTest, math.huge
search, zeroTest, math.huge
)
)

Revision as of 12:05, 27 February 2015

local search = require('Module:Exponential search')
local ScribuntoUnit = require('Module:ScribuntoUnit')
local suite = ScribuntoUnit:new()

local function makeArrayTest(len)
	local array = {}
	for i = 1, len do
		array[i] = true
	end
	return function (i)
		return array[i]
	end
end

local zeroTest = makeArrayTest(0)

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, zeroTest, 'foo')
	self:assertError(search, zeroTest, zeroTest)
	self:assertError(search, zeroTest, true)
	self:assertError(search, zeroTest, {})
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, zeroTest, 0
	)
	self:assertErrorMsg(
		"invalid init value '1.5' detected in argument #2 to 'Exponential search' (init values must be a positive integer)",
		search, zeroTest, 1.5
	)
	self:assertErrorMsg(
		"invalid init value '-3' detected in argument #2 to 'Exponential search' (init values must be a positive integer)",
		search, zeroTest, -3
	)
	self:assertErrorMsg(
		"invalid init value 'inf' detected in argument #2 to 'Exponential search' (init values must be a positive integer)",
		search, zeroTest, math.huge
	)
	self:assertErrorMsg(
		"invalid init value '-nan' detected in argument #2 to 'Exponential search' (init values must be a positive integer)",
		search, zeroTest, 0/0
	)
end

return suite