113 lines
2.8 KiB
Lua
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)
|