2010-05-09 23:51:46 +00:00
|
|
|
package.path = "?.lua;test/lua/errors/?.lua"
|
2008-07-16 22:04:15 +00:00
|
|
|
require 'args'
|
|
|
|
|
|
2010-05-16 17:53:33 +00:00
|
|
|
local tostring = tostring
|
|
|
|
|
_G.tostring = function(x)
|
|
|
|
|
local s = tostring(x)
|
|
|
|
|
return type(x)=='number' and #s>4 and (s:sub(1,5)..'...') or s
|
|
|
|
|
end
|
|
|
|
|
|
2008-07-16 22:04:15 +00:00
|
|
|
-- arg type tests for math library functions
|
2008-07-21 22:12:06 +00:00
|
|
|
local somenumber = {1,0.75,'-1','-0.25'}
|
|
|
|
|
local somepositive = {1,0.75,'2', '2.5'}
|
2008-07-17 01:23:33 +00:00
|
|
|
local notanumber = {nil,astring,aboolean,afunction,atable,athread}
|
2008-07-16 22:04:15 +00:00
|
|
|
local nonnumber = {astring,aboolean,afunction,atable}
|
|
|
|
|
|
|
|
|
|
local singleargfunctions = {
|
2008-07-23 23:52:20 +00:00
|
|
|
'abs', 'acos', 'asin', 'atan', 'cos', 'cosh', 'deg', 'exp', 'floor',
|
2008-07-21 22:12:06 +00:00
|
|
|
'rad', 'randomseed', 'sin', 'sinh', 'tan', 'tanh', 'frexp',
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
local singleargposdomain = {
|
2012-09-10 14:21:18 +00:00
|
|
|
'log', 'sqrt', 'ceil',
|
2008-07-21 22:12:06 +00:00
|
|
|
}
|
|
|
|
|
|
2008-07-16 22:04:15 +00:00
|
|
|
local twoargfunctions = {
|
2008-07-23 23:52:20 +00:00
|
|
|
'atan2',
|
2008-07-21 22:12:06 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
local twoargsposdomain = {
|
2008-07-23 23:52:20 +00:00
|
|
|
'pow', 'fmod',
|
2008-07-16 22:04:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-- single argument tests
|
|
|
|
|
for i,v in ipairs(singleargfunctions) do
|
|
|
|
|
local funcname = 'math.'..v
|
|
|
|
|
banner(funcname)
|
|
|
|
|
checkallpass(funcname,{somenumber})
|
2010-05-12 03:21:12 +00:00
|
|
|
checkallerrors(funcname,{notanumber},'bad argument')
|
2008-07-16 22:04:15 +00:00
|
|
|
end
|
|
|
|
|
|
2008-07-21 22:12:06 +00:00
|
|
|
-- single argument, positive domain tests
|
|
|
|
|
for i,v in ipairs(singleargposdomain) do
|
|
|
|
|
local funcname = 'math.'..v
|
|
|
|
|
banner(funcname)
|
|
|
|
|
checkallpass(funcname,{somepositive})
|
2010-05-12 03:21:12 +00:00
|
|
|
checkallerrors(funcname,{notanumber},'bad argument')
|
2008-07-21 22:12:06 +00:00
|
|
|
end
|
|
|
|
|
|
2008-07-16 22:04:15 +00:00
|
|
|
-- two-argument tests
|
|
|
|
|
for i,v in ipairs(twoargfunctions) do
|
|
|
|
|
local funcname = 'math.'..v
|
|
|
|
|
banner(funcname)
|
|
|
|
|
checkallpass(funcname,{somenumber,somenumber})
|
2010-05-12 03:21:12 +00:00
|
|
|
checkallerrors(funcname,{},'bad argument')
|
|
|
|
|
checkallerrors(funcname,{notanumber},'bad argument')
|
|
|
|
|
checkallerrors(funcname,{notanumber,somenumber},'bad argument')
|
|
|
|
|
checkallerrors(funcname,{somenumber},'bad argument')
|
|
|
|
|
checkallerrors(funcname,{somenumber,notanumber},'bad argument')
|
2008-07-16 22:04:15 +00:00
|
|
|
end
|
|
|
|
|
|
2008-07-21 22:12:06 +00:00
|
|
|
-- two-argument, positive domain tests
|
|
|
|
|
for i,v in ipairs(twoargsposdomain) do
|
|
|
|
|
local funcname = 'math.'..v
|
|
|
|
|
banner(funcname)
|
|
|
|
|
checkallpass(funcname,{somepositive,somenumber})
|
2010-05-12 03:21:12 +00:00
|
|
|
checkallerrors(funcname,{},'bad argument')
|
|
|
|
|
checkallerrors(funcname,{notanumber},'bad argument')
|
|
|
|
|
checkallerrors(funcname,{notanumber,somenumber},'bad argument')
|
|
|
|
|
checkallerrors(funcname,{somenumber},'bad argument')
|
|
|
|
|
checkallerrors(funcname,{somenumber,notanumber},'bad argument')
|
2008-07-21 22:12:06 +00:00
|
|
|
end
|
|
|
|
|
|
2008-07-16 22:04:15 +00:00
|
|
|
-- math.max
|
|
|
|
|
banner('math.max')
|
|
|
|
|
checkallpass('math.max',{somenumber})
|
|
|
|
|
checkallpass('math.max',{somenumber,somenumber})
|
2010-05-12 03:21:12 +00:00
|
|
|
checkallerrors('math.max',{},'bad argument')
|
|
|
|
|
checkallerrors('math.max',{nonnumber},'bad argument')
|
|
|
|
|
checkallerrors('math.max',{somenumber,nonnumber},'bad argument')
|
2008-07-16 22:04:15 +00:00
|
|
|
|
|
|
|
|
-- math.min
|
|
|
|
|
banner('math.min')
|
|
|
|
|
checkallpass('math.min',{somenumber})
|
|
|
|
|
checkallpass('math.min',{somenumber,somenumber})
|
2010-05-12 03:21:12 +00:00
|
|
|
checkallerrors('math.min',{},'bad argument')
|
|
|
|
|
checkallerrors('math.min',{nonnumber},'bad argument')
|
|
|
|
|
checkallerrors('math.min',{somenumber,nonnumber},'bad argument')
|
2008-07-16 22:04:15 +00:00
|
|
|
|
|
|
|
|
-- math.random
|
|
|
|
|
local somem = {3,4.5,'6.7'}
|
|
|
|
|
local somen = {8,9.10,'12.34'}
|
|
|
|
|
local notamn = {astring,aboolean,atable,afunction}
|
|
|
|
|
banner('math.random')
|
2008-07-21 22:12:06 +00:00
|
|
|
checkallpass('math.random',{},true)
|
|
|
|
|
checkallpass('math.random',{somem},true)
|
|
|
|
|
checkallpass('math.random',{somem,somen},true)
|
|
|
|
|
checkallpass('math.random',{{-4,-5.6,'-7','-8.9'},{-1,100,23.45,'-1.23'}},true)
|
2008-07-16 22:04:15 +00:00
|
|
|
checkallerrors('math.random',{{-4,-5.6,'-7','-8.9'}},'interval is empty')
|
|
|
|
|
checkallerrors('math.random',{somen,somem},'interval is empty')
|
2010-05-12 03:21:12 +00:00
|
|
|
checkallerrors('math.random',{notamn,somen},'bad argument')
|
|
|
|
|
checkallerrors('math.random',{somem,notamn},'bad argument')
|
2008-07-16 22:04:15 +00:00
|
|
|
|
|
|
|
|
-- math.ldexp
|
|
|
|
|
local somee = {-3,0,3,9.10,'12.34'}
|
|
|
|
|
local notae = {nil,astring,aboolean,atable,afunction}
|
|
|
|
|
banner('math.ldexp')
|
|
|
|
|
checkallpass('math.ldexp',{somenumber,somee})
|
2008-07-21 22:12:06 +00:00
|
|
|
checkallerrors('math.ldexp',{},'bad argument')
|
|
|
|
|
checkallerrors('math.ldexp',{notanumber},'bad argument')
|
2010-05-12 03:21:12 +00:00
|
|
|
checkallerrors('math.ldexp',{notanumber,somee},'bad argument')
|
|
|
|
|
checkallerrors('math.ldexp',{somenumber},'bad argument')
|
|
|
|
|
checkallerrors('math.ldexp',{somenumber,notae},'bad argument')
|