leef-math-cd2025/spec/vec2_spec.lua
Landon Manning bce2621f2d Fixed tests
2015-12-13 06:33:20 -04:00

113 lines
2.8 KiB
Lua

local constants = require "modules.constants"
local vec2 = require "modules.vec2"
describe("vec2:", function()
it("testing basic operators", function()
-- add
assert.is.equal(vec2(1, 1) + vec2(2, 3), vec2(3, 4))
assert.is.equal(vec2(1, 1) + 5, vec2(6, 6))
-- sub
assert.is.equal(vec2(1, 1) - vec2(2, 3), vec2(-1, -2))
assert.is.equal(vec2(1, 1) + 5, vec2(-4, -4))
-- mul
assert.is.equal(vec2(2, 1) * vec2(2, 3), vec2(4, 3))
assert.has_no.errors(function() return vec2(1,1) * {x=2,y=2} end)
assert.has_no.errors(function() return 2 * vec2(1,1) end)
assert.has_no.errors(function() return vec2(1,1) * 2 end)
-- unm
assert.is.equal(vec2(1, 1) + -vec2(1, 1), vec2(0, 0))
-- div
assert.is.equal(vec2(1, 1) / 2, vec2(0.5, 0.5))
assert.is.equal(vec2(1, 1) / vec2(2, 2), vec2(0.5, 0.5))
assert.is.equal(1 / vec2(2, 2), vec2(0.5, 0.5))
end)
it("testing value ranges", function()
-- This makes sure we are initializing reasonably and that
-- we haven't broken everything with some FFI magic.
assert.is.equal(vec2(256, 0).x, 256)
assert.is.equal(vec2(0, 65537).y, 65537)
assert.is.equal(vec2(-953, 0).x, -953)
assert.is.equal(vec2(0, 1.2222).y, 1.2222)
end)
it("testing comparison operators", function()
-- eq
assert.is_true(vec2(5,5) == vec2(5,5))
-- lt
assert.is_true(vec2(3,3) < vec2(5,5))
assert.is_false(vec2(5,5) < vec2(5,5))
-- le
assert.is_true(vec2(5,5) <= vec2(5,5))
assert.is_false(vec2(3,3) >= vec2(5,5))
end)
it("testing new", function()
local v = vec2()
assert.is_true(v.x == 0)
assert.is_true(v.y == 0)
v = vec2{1, 2}
assert.is_true(v.x == 1)
assert.is_true(v.y == 2)
v = vec2(4, 5)
assert.is_true(v.x == 4)
assert.is_true(v.y == 5)
end)
it("testing tostring", function()
assert.has_no.errors(function() return tostring(vec2(1,1)) end)
end)
it("testing isvector", function()
assert.is_true(vec2.isvector(vec2()))
assert.is_true(vec2.isvector(vec2{1,1}))
assert.is_true(vec2.isvector{x=1, y=2})
end)
it("testing clone", function()
local v = vec2(1,1)
local c = v:clone()
c.x = 2
assert.is_not.equal(v, c)
end)
it("testing len and normalize", function()
assert.is.equal(vec2(1,0):len(), 1)
assert.is_true(vec2(5,-10):normalize():len() - 1 < constants.FLT_EPSILON)
end)
it("testing len2", function()
assert.is.equal(vec2(1,0):len2(), 1)
assert.is.equal(vec2(2,0):len2(), 4)
end)
it("testing lerp", function()
assert.is.equal(vec2(0, 0):lerp(vec2(1, 1), 0.5), vec2(0.5, 0.5))
end)
describe("vec2 pending tests", function()
pending "rotate"
pending "dot"
pending "cross"
pending "trim"
pending "angle_to"
pending "angle_between"
pending "mirror_on"
pending "orientation_to_direction"
pending "project_from"
pending "project_on"
pending "perpendicular"
pending "rotate"
pending "dist"
pending "dist2"
end)
end)