2
0
mirror of https://github.com/koreader/koreader synced 2024-11-10 01:10:34 +00:00
koreader/spec/unit/optmath_spec.lua

74 lines
2.9 KiB
Lua

describe("Math module", function()
local Math
setup(function()
require("commonrequire")
Math = require("optmath")
end)
describe("tmin", function()
it("should return nil on empty table", function()
assert.is_nil(Math.tmin({}))
end)
it("should get minimum element in table", function()
assert.are.same(5, Math.tmin({9,7,10,11,5,7}))
end)
it("should get minimum element in table using custom function", function()
assert.are.same(5,
Math.tmin({"9","7","10","11","5","7"}, function(a,b)
return tonumber(a) > tonumber(b)
end))
end)
end)
describe("tmax", function()
it("should return nil on empty table", function()
assert.is_nil(Math.tmin({}))
end)
it("should get maximum element in table", function()
assert.are.same(4, Math.tmax({9,7,10,11,5,7}))
end)
it("should get maximum element in table using custom function", function()
assert.are.same(4,
Math.tmax({"9","7","10","11","5","7"}, function(a,b)
return tonumber(a) < tonumber(b)
end))
end)
end)
it("should round away from zero", function()
assert.are.same(2, Math.roundAwayFromZero(1.5))
assert.are.same(2, Math.roundAwayFromZero(1.4))
assert.are.same(-2, Math.roundAwayFromZero(-1.4))
assert.are.same(1, Math.roundAwayFromZero(0.2))
assert.are.same(-1, Math.roundAwayFromZero(-0.2))
end)
it("should round", function()
assert.are.same(2, Math.round(1.5))
assert.are.same(1, Math.round(1.4))
assert.are.same(-1, Math.round(-1.4))
assert.are.same(0, Math.round(0.2))
assert.are.same(0, Math.round(-0.2))
end)
it("should determine odd or even", function()
assert.are.same("odd", Math.oddEven(1))
assert.are.same("even", Math.oddEven(2))
assert.are.same("odd", Math.oddEven(3))
assert.are.same("even", Math.oddEven(4))
assert.are.same("even", Math.oddEven(-4))
assert.are.same("odd", Math.oddEven(-3))
assert.are.same("even", Math.oddEven(0))
end)
describe("minmax", function()
it("should return a value within a range", function()
assert.are.same(-1, Math.clamp(-2, -1, 10))
assert.are.same(-1, Math.clamp(-1, -1, 10))
assert.are.same(0, Math.clamp(0, -1, 10))
assert.are.same(5, Math.clamp(5, -1, 10))
assert.are.same(9, Math.clamp(9, -1, 10))
assert.are.same(10, Math.clamp(10, -1, 10))
assert.are.same(10, Math.clamp(11, -1, 10))
end)
end)
end)