You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

169 lines
5.0 KiB

-- abs
local a = math.abs (10)
local b = math.abs (-20)
local c = math.abs (2.56)
local d = math.abs (-34.67)
local e = math.abs (-0)
assertTrue (a == 10, 'math.abs() should return the passed argument if it is positive')
assertTrue (b == 20, 'math.abs() should return the positive form of the passed argument if it is negative')
assertTrue (c == 2.56, 'math.abs() should return the passed argument if it is a positive floating point number')
assertTrue (d == 34.67, 'math.abs() should return the positive form of the passed argument if it is a positive floating point number')
assertTrue (e == 0, 'math.abs() should return zero if passed zero')
-- math.acos
-- math.cos
local a = math.acos (1)
--local b = math.acos (math.cos (0.3))
local c = math.cos (0)
--local d = math.cos (math.acos (0.3))
assertTrue (a == 0, 'math.acos() should return 0 when passed 1')
--assertTrue (b == 0.3, 'math.acos() should return x when passed math.cos(x)')
assertTrue (c == 1, 'math.cos() should return 1 when passed 0')
--assertTrue (d == 0.3, 'math.cos() should return x when passed math.acos(x)')
-- math.asin
-- math.sin
local a = math.asin (0)
--local b = math.asin (math.sin (90))
local c = math.sin (0)
local d = math.sin (math.asin (0.2))
assertTrue (a == 0, 'math.asin() should return 0 when passed 0')
--assertTrue (b == 90, 'math.asin() should return x when passed math.sin(x)')
assertTrue (c == 0, 'math.sin() should return 0 when passed 0')
assertTrue (d == 0.2, 'math.sin() should return x when passed math.asin(x)')
-- math.atan
-- math.tan
local a = math.atan (0)
--local b = math.atan (math.tan (0.3))
local c = math.tan (0)
local d = math.tan (math.atan (0.3))
assertTrue (a == 0, 'math.atan() should return 0 when passed 0')
--assertTrue (b == 0.3, 'math.atan() should return x when passed math.tan(x)')
assertTrue (c == 0, 'math.tan() should return 0 when passed 0')
assertTrue (d == 0.3, 'math.tan() should return x when passed math.atan(x)')
-- math.ceil
local a = math.ceil (14)
local b = math.ceil (14.45)
local c = math.ceil (14.5)
local d = math.ceil (0.1)
local e = math.ceil (0.6)
local f = math.ceil (-0.6)
local g = math.ceil (-122.4)
assertTrue (a == 14, 'math.ceil() should round up to the next integer [1]')
assertTrue (b == 15, 'math.ceil() should round up to the next integer [2]')
assertTrue (c == 15, 'math.ceil() should round up to the next integer [3]')
assertTrue (d == 1, 'math.ceil() should round up to the next integer [4]')
assertTrue (e == 1, 'math.ceil() should round up to the next integer [5]')
assertTrue (f == 0, 'math.ceil() should round up to the next integer [6]')
assertTrue (g == -122, 'math.ceil() should round up to the next integer [7]')
-- math.deg
a = math.deg (0)
b = math.deg (math.pi)
c = math.deg (math.pi * 2)
d = math.deg (math.pi / 2)
assertTrue (a == 0, 'math.deg() should return 0 when passed zero')
assertTrue (b == 180, 'math.deg() should return 180 when passed Pi')
assertTrue (c == 360, 'math.deg() should return 360 when passed 2Pi')
assertTrue (d == 90, 'math.deg() should return 90 when passed Pi/2')
--math.frexp
a, b = math.frexp(63)
assertTrue (a == 0.984375, 'math.frexp should return the correct mantissa when passed a positive number.')
assertTrue (b == 6, 'math.frexp should return the correct exponent when passed a positive number.')
a, b = math.frexp(-63)
assertTrue (a == -0.984375, 'math.frexp should return the correct mantissa when passed a negative number.')
assertTrue (b == 6, 'math.frexp should return the correct exponent when passed a negative number.')
a, b = math.frexp(0)
assertTrue (a == 0, 'math.frexp should return a zero mantissa when passed zero.')
assertTrue (b == 0, 'math.frexp should return a zero exponent when passed zero.')
--math.huge
a = math.huge + 1
b = -math.huge - 1
assertTrue (a == math.huge, 'math.huge should not change value with addition.')
assertTrue (b == -math.huge, 'Negative math.huge should not change value with subtraction.')
-- math.rad
a = math.rad (0)
b = math.rad (180)
c = math.rad (270)
d = math.rad (360)
e = math.rad (450)
f = math.rad (-180)
assertTrue (a == 0, 'math.rad() should return 0 when passed zero')
assertTrue (b == math.pi, 'math.rad() should return Pi when passed 180')
assertTrue (c == 1.5 * math.pi, 'math.rad() should return 1.5*Pi when passed 270')
assertTrue (d == 2 * math.pi, 'math.rad() should return 2*Pi when passed 360')
assertTrue (e == 2.5 * math.pi, 'math.rad() should return 2.5*Pi when passed 450')
assertTrue (f == -math.pi, 'math.rad() should return -Pi when passed -180')
-- math.random
a = math.random()
b = math.random()
assertTrue (a == 16807 / 2147483647, 'math.random() should initialise with a value of 1')
assertTrue (b == ((16807 * a * 2147483647) % 2147483647) / 2147483647, 'math.random() should follow the right sequence [1]')
-- math.randomseed
math.randomseed(123)
c = math.random()
d = math.random()
assertTrue (c == ((16807 * 123) % 2147483647) / 2147483647, 'math.random() should follow the right sequence [2]')
assertTrue (d == ((16807 * c * 2147483647) % 2147483647) / 2147483647, 'math.random() should follow the right sequence [3]')