mirror of https://gitea.it/1414codeforge/gear
[spec/utils_spec.lua] Remove obsolete test.
parent
0e2dd54011
commit
619d31bf2f
@ -1,214 +0,0 @@
|
||||
require 'busted.runner'()
|
||||
|
||||
describe("df-utils", function()
|
||||
|
||||
setup(function()
|
||||
utils = require 'init'
|
||||
math = require 'math'
|
||||
end)
|
||||
|
||||
describe("insertion sort #sort", function()
|
||||
local insertionsort = utils.insertionsort
|
||||
|
||||
it("sorts arrays", function()
|
||||
local elems = {}
|
||||
local expect = {}
|
||||
|
||||
for n = 2,512 do
|
||||
for i = 1,n do
|
||||
elems[i] = math.random(-32768, 32767)
|
||||
expect[i] = elems[i]
|
||||
end
|
||||
|
||||
table.sort(expect)
|
||||
insertionsort(elems)
|
||||
|
||||
assert.are.same(expect, elems)
|
||||
end
|
||||
end)
|
||||
|
||||
it("has no effect on single element array", function()
|
||||
|
||||
for i = 1,10 do
|
||||
local val = (math.random() - 0.5) * 1024
|
||||
local expect = { val }
|
||||
local elems = { val }
|
||||
|
||||
insertionsort(elems)
|
||||
|
||||
assert.are.same(expect, elems)
|
||||
end
|
||||
end)
|
||||
|
||||
it("does nothing on empty array", function()
|
||||
local expect = {}
|
||||
local elems = {}
|
||||
|
||||
insertionsort(elems)
|
||||
|
||||
assert.are.same(expect, elems)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe("binary search #bsearch", function()
|
||||
local bsearchl = utils.bsearchl
|
||||
local bsearchr = utils.bsearchr
|
||||
|
||||
it("behaves properly on empty arrays", function()
|
||||
local empty = {}
|
||||
|
||||
local idx = bsearchr(empty, 1)
|
||||
assert.is_true(empty[idx] == nil)
|
||||
|
||||
idx = bsearchl(empty, 1)
|
||||
assert.is_true(empty[idx] == nil)
|
||||
end)
|
||||
|
||||
it("finds elements within sorted arrays", function()
|
||||
local dims = { 1, 2, 64, 512, 1024 }
|
||||
|
||||
for _,n in ipairs(dims) do
|
||||
local elems = {}
|
||||
|
||||
for i = 1,n do
|
||||
elems[#elems+1] = ((math.random() - 0.5) * 4096)
|
||||
end
|
||||
|
||||
local mustfind = {}
|
||||
for i = 1,10 do
|
||||
mustfind[#mustfind+1] = elems[math.random(1,#elems)]
|
||||
end
|
||||
|
||||
local mustnotfind = {
|
||||
4097,
|
||||
-4097,
|
||||
-math.huge,
|
||||
math.huge,
|
||||
16386,
|
||||
-16386
|
||||
}
|
||||
|
||||
table.sort(elems)
|
||||
|
||||
for _,v in ipairs(mustfind) do
|
||||
local idx = bsearchl(elems, v)
|
||||
assert.equal(v, elems[idx])
|
||||
assert.is_false(elems[idx+1] ~= nil and elems[idx+1] <= v)
|
||||
|
||||
idx = bsearchr(elems, v)
|
||||
assert.equal(v, elems[idx])
|
||||
assert.is_false(elems[idx+1] ~= nil and elems[idx+1] <= v)
|
||||
end
|
||||
for _,v in ipairs(mustnotfind) do
|
||||
local idx = bsearchl(elems, v)
|
||||
assert.not_equal(v, elems[idx])
|
||||
if v < elems[1] then
|
||||
assert.is_true(elems[idx] == nil)
|
||||
else
|
||||
assert.is_true(elems[idx] <= v)
|
||||
end
|
||||
|
||||
idx = bsearchr(elems, v)
|
||||
assert.not_equal(v, elems[idx])
|
||||
if v > elems[#elems] then
|
||||
assert.is_true(elems[idx] == nil)
|
||||
else
|
||||
assert.is_true(elems[idx] >= v)
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
describe("rect #bounds", function()
|
||||
local bigreal = 9999999.0
|
||||
local min,max = math.min, math.max
|
||||
local pointinrect = utils.pointinrect
|
||||
local rectempty = utils.rectempty
|
||||
local recteq = utils.recteq
|
||||
local rectexpand = utils.rectexpand
|
||||
local rectinside = utils.rectinside
|
||||
local rectintersection = utils.rectintersection
|
||||
local rectunion = utils.rectunion
|
||||
|
||||
it("is empty if its dimensions are negative", function()
|
||||
assert.is_true(rectempty(0,0,-1,-1))
|
||||
assert.is_true(rectempty(bigreal,bigreal,-bigreal,-bigreal))
|
||||
assert.is_true(rectempty(-bigreal,-bigreal,-bigreal,-bigreal))
|
||||
assert.is_true(rectempty(0,0,bigreal,-1))
|
||||
assert.is_true(rectempty(0,0,0,-1))
|
||||
assert.is_true(rectempty(0,0,-1,bigreal))
|
||||
assert.is_true(rectempty(0,0,-1,0))
|
||||
|
||||
assert.is_false(rectempty(0,0,0,0))
|
||||
assert.is_false(rectempty(0,0,-0,0))
|
||||
assert.is_false(rectempty(bigreal,bigreal,bigreal,bigreal))
|
||||
end)
|
||||
it("doesn't contain anything if empty", function()
|
||||
local x,y,w,h = 0,0,-1,-1
|
||||
|
||||
assert.is_false(rectinside(0,0,0,0, x,y,w,h))
|
||||
assert.is_false(rectinside(x,y,w,h, x,y,w,h))
|
||||
assert.is_false(rectinside(0,0,bigreal,bigreal, x,y,w,h))
|
||||
assert.is_false(rectinside(0,0,-bigreal,-bigreal, x,y,w,h))
|
||||
end)
|
||||
it("always contains empty rect if non-empty", function()
|
||||
assert.is_true(rectinside(0,0,-1,-1, 0,0,0,0))
|
||||
assert.is_true(rectinside(bigreal,bigreal,-bigreal,-bigreal, 0,0,0,0))
|
||||
assert.is_true(rectinside(bigreal,bigreal,bigreal,-bigreal, 0,0,0,0))
|
||||
assert.is_true(rectinside(bigreal,bigreal,-bigreal,bigreal, 0,0,0,0))
|
||||
assert.is_true(rectinside(bigreal,bigreal,-1.0e-5,bigreal, 0,0,0,0))
|
||||
end)
|
||||
it("may contain a single point", function()
|
||||
for i,pt in ipairs({{0,0}, {bigreal,bigreal}, {-bigreal,-bigreal}}) do
|
||||
local px,py = pt[1], pt[2]
|
||||
local x,y,w,h = 0,0,-1,-1
|
||||
|
||||
x,y,w,h = rectexpand(x,y,w,h, px,py)
|
||||
assert.is_false(rectempty(x,y,w,h))
|
||||
assert.is_true(pointinrect(px,py, x,y,w,h))
|
||||
assert.is_true(recteq(x,y,w,h, px,py,0,0))
|
||||
end
|
||||
end)
|
||||
it("may expand arbitrarily to contain more points", function()
|
||||
local points = {}
|
||||
|
||||
local xmin,ymin = math.huge, math.huge
|
||||
local xmax,ymax = -math.huge,-math.huge
|
||||
for i = 1,16535 do
|
||||
local x = (math.random() - 0.5) * 50
|
||||
local y = (math.random() - 0.5) * 50
|
||||
|
||||
points[#points+1] = { x, y }
|
||||
xmin = min(xmin, x)
|
||||
ymin = min(ymin, y)
|
||||
xmax = max(xmax, x)
|
||||
ymax = max(ymax, y)
|
||||
end
|
||||
|
||||
local x,y,w,h = 0,0,-1,-1
|
||||
for i,pt in ipairs(points) do
|
||||
local px,py = pt[1], pt[2]
|
||||
x,y,w,h = rectexpand(x,y,w,h, px,py)
|
||||
|
||||
assert.is_true(pointinrect(px,py, x,y,w,h))
|
||||
end
|
||||
|
||||
local ex,ey,ew,eh = xmin,ymin, xmax-xmin,ymax-ymin
|
||||
assert.is_false(rectempty(x,y,w,h))
|
||||
assert.is_true(recteq(x,y,w,h, ex,ey,ew,eh, 0.1))
|
||||
end)
|
||||
it("may expand arbitrarily to contain more rects", function()
|
||||
pending("to be tested...")
|
||||
end)
|
||||
it("may be used to enclose arbitrary geometry", function()
|
||||
pending("to be tested...")
|
||||
end)
|
||||
it("may be tested against other rects", function()
|
||||
pending("to be tested...")
|
||||
end)
|
||||
it("may be intersected with other rects", function()
|
||||
pending("to be tested...")
|
||||
end)
|
||||
end)
|
||||
end)
|
Loading…
Reference in New Issue