mirror of
https://github.com/koreader/koreader
synced 2024-10-31 21:20:20 +00:00
74 lines
2.9 KiB
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)
|