Deques now have metatables, fixed deque unit tests

This commit is contained in:
2021-07-12 16:32:58 -04:00
parent 7290beee34
commit 3fc76afc09
2 changed files with 38 additions and 25 deletions

View File

@@ -204,11 +204,11 @@ int deque_make_room(lua_State *L, int deque, int left, int fill, int max) {
return max; return max;
} }
LuaDefine(deque_create, "c") { LuaDefine(deque_create, "c") {
LuaRet rdeque; LuaRet rdeque;
LuaStack LS(L, rdeque); LuaVar classobj;
const int imax = 8; LuaStack LS(L, rdeque, classobj);
const int imax = 4;
LS.createtable(rdeque, DEQUE_BASE + imax - 1, 0); LS.createtable(rdeque, DEQUE_BASE + imax - 1, 0);
LS.rawseti(rdeque, DEQUE_LEFT, 0); LS.rawseti(rdeque, DEQUE_LEFT, 0);
LS.rawseti(rdeque, DEQUE_FILL, 0); LS.rawseti(rdeque, DEQUE_FILL, 0);
@@ -216,6 +216,8 @@ LuaDefine(deque_create, "c") {
for (int i = 0; i < imax; i++) { for (int i = 0; i < imax; i++) {
LS.rawseti(rdeque, DEQUE_BASE + i, 0); LS.rawseti(rdeque, DEQUE_BASE + i, 0);
} }
LS.makeclass(classobj, "deque");
LS.setmetatable(rdeque, classobj);
return LS.result(); return LS.result();
} }

View File

@@ -56,25 +56,36 @@ function unittests.tables()
assert(table.equal(t, {3,4,3,4})) assert(table.equal(t, {3,4,3,4}))
end end
-- function unittests.queues() function unittests.deque()
-- local q = queue.create() local d = deque.create()
-- assert(queue.size(q) == 0) for i=1,7 do
-- queue.push(q, 27) for j=1,i do
-- assert(queue.size(q) == 1) d:pushr(j)
-- queue.push(q, 45) end
-- assert(queue.nth(q, 1) == 27) for j=1,i do
-- assert(queue.nth(q, 2) == 45) assert(d:nthl(j) == j)
-- assert(queue.size(q) == 2) end
-- assert(queue.pop(q) == 27) for j=1,i do
-- assert(queue.size(q) == 1) assert(d:popl() == j)
-- assert(queue.pop(q) == 45) end
-- assert(queue.size(q) == 0) end
-- assert(queue.pop(q) == nil) for i=1,7 do
-- assert(queue.size(q) == 0) for j=1,i do
-- for i=1,50 do d:pushl(j)
-- queue.push(q,i) end
-- end for j=1,i do
-- for i=1,50 do assert(d:nthr(j) == j)
-- assert(queue.pop(q)==i) end
-- end for j=1,i do
-- end assert(d:popr() == j)
end
end
for i=1,7 do
for j=1,i do
d:pushr(j)
end
for j=1,i do
assert(d:popr() == i+1-j)
end
end
end