134 lines
3.8 KiB
Lua
134 lines
3.8 KiB
Lua
local Test = require("tests/factorio_luaunit")
|
|
local math = require("__flib__/math")
|
|
-- FIXME: Use Factorio testing framework
|
|
--- @diagnostic disable-next-line
|
|
math.randomseed(os.clock())
|
|
|
|
--- @diagnostic disable: undefined-field
|
|
|
|
function Test_radians()
|
|
for i = 1, 90 do
|
|
Test.assertAlmostEquals(i * math.deg_to_rad, math.rad(i), 0.1)
|
|
end
|
|
end
|
|
|
|
function Test_degrees()
|
|
for i = 1, 90 do
|
|
Test.assertAlmostEquals(i * math.rad_to_deg, math.deg(i), 0.1)
|
|
end
|
|
end
|
|
|
|
function Test_round()
|
|
Test.assertEquals(math.round(3.51), 4)
|
|
Test.assertEquals(math.round(3.51, 0.1), 3.5)
|
|
end
|
|
|
|
function Test_ceiled()
|
|
Test.assertEquals(math.ceiled(3.7), 4)
|
|
Test.assertEquals(math.ceiled(3.7), math.ceil(3.7))
|
|
Test.assertEquals(math.ceiled(-3.7), -3)
|
|
Test.assertEquals(math.ceiled(-3.7), math.ceil(-3.7))
|
|
Test.assertAlmostEquals(math.ceiled(-3.75, 0.1), -3.8, 0.1)
|
|
end
|
|
|
|
function Test_floored()
|
|
Test.assertEquals(math.floored(3.7), 3)
|
|
Test.assertEquals(math.floored(3.7), math.floor(3.7))
|
|
Test.assertEquals(math.floored(-3.7), -4)
|
|
Test.assertEquals(math.floored(-3.7), math.floor(-3.7))
|
|
Test.assertAlmostEquals(math.floored(-3.75, 0.1), -3.8, 0.1)
|
|
end
|
|
|
|
function Test_clamp()
|
|
Test.assertEquals(math.clamp(0, 1, 2), 1)
|
|
Test.assertEquals(math.clamp(0, 0, 2), 0)
|
|
Test.assertEquals(math.clamp(0, 0, 0), 0)
|
|
|
|
Test.assertEquals(math.clamp(0, -10, 10), 0)
|
|
Test.assertEquals(math.clamp(-100, -10, 10), -10)
|
|
Test.assertEquals(math.clamp(100, -10, 10), 10)
|
|
|
|
Test.assertEquals(math.clamp(-2), 0)
|
|
Test.assertEquals(math.clamp(0.5), 0.5)
|
|
Test.assertEquals(math.clamp(3), 1)
|
|
|
|
--- Max is smaller than min
|
|
Test.assertEquals(math.clamp(0, 1, 0), 1)
|
|
Test.assertEquals(math.clamp(2, 1, 0), 0)
|
|
Test.assertEquals(math.clamp(1, 1, 0), 0)
|
|
end
|
|
|
|
local values1 = { 25, 25, 25, 25 }
|
|
local values2 = { 10, 25, 40, 45, 50 }
|
|
local values3 = { 10, 25, 40, -50, -45 }
|
|
local values4 = { -23, -12, -50, -10, -33 }
|
|
|
|
function Test_maximum()
|
|
Test.assertEquals(math.maximum(values1), 25)
|
|
Test.assertEquals(math.maximum(values2), 50)
|
|
Test.assertEquals(math.maximum(values3), 40)
|
|
Test.assertEquals(math.maximum(values4), -10)
|
|
for _ = 1, 5 do
|
|
local rando = {}
|
|
while #rando < 11 do
|
|
rando[#rando + 1] = math.random(-50, 50)
|
|
end
|
|
Test.assertEquals(math.maximum(rando), math.max(table.unpack(rando)))
|
|
end
|
|
end
|
|
|
|
function Test_minimum()
|
|
Test.assertEquals(math.minimum(values1), 25)
|
|
Test.assertEquals(math.minimum(values2), 10)
|
|
Test.assertEquals(math.minimum(values3), -50)
|
|
Test.assertEquals(math.minimum(values4), -50)
|
|
for _ = 1, 5 do
|
|
local rando = {}
|
|
while #rando < 11 do
|
|
rando[#rando + 1] = math.random(-50, 50)
|
|
end
|
|
Test.assertEquals(math.minimum(rando), math.min(table.unpack(rando)))
|
|
end
|
|
end
|
|
|
|
function Test_sum()
|
|
Test.assertEquals(math.sum(values1), 100)
|
|
Test.assertEquals(math.sum(values2), 185)
|
|
Test.assertEquals(math.sum(values3), -5)
|
|
Test.assertEquals(math.sum(values4), -117)
|
|
end
|
|
|
|
function Test_mean()
|
|
Test.assertEquals(math.mean(values1), 25)
|
|
Test.assertEquals(math.mean(values2), 37)
|
|
Test.assertEquals(math.mean(values3), -1)
|
|
Test.assertEquals(math.mean(values4), -23.4)
|
|
end
|
|
|
|
function Test_midrange()
|
|
Test.assertEquals(math.midrange(values1), 25)
|
|
Test.assertEquals(math.midrange(values2), 30)
|
|
Test.assertEquals(math.midrange(values3), -5)
|
|
Test.assertEquals(math.midrange(values4), -30)
|
|
end
|
|
|
|
function Test_range()
|
|
Test.assertEquals(math.range(values1), 0)
|
|
Test.assertEquals(math.range(values2), 40)
|
|
Test.assertEquals(math.range(values3), 90)
|
|
Test.assertEquals(math.range(values4), 40)
|
|
end
|
|
|
|
function Test_sign()
|
|
Test.assertEquals(math.sign(0), 1)
|
|
Test.assertEquals(math.sign(1), 1)
|
|
Test.assertEquals(math.sign(-1), -1)
|
|
end
|
|
|
|
function Test_lerp()
|
|
Test.assertEquals(math.lerp(1, 2, 0.5), 1.5)
|
|
Test.assertEquals(math.lerp(0, 10, 0.25), 2.5)
|
|
end
|
|
|
|
Test.Run()
|