mirror of
https://github.com/bjc/prosody.git
synced 2025-04-04 21:57:45 +03:00
68 lines
1.5 KiB
Lua
68 lines
1.5 KiB
Lua
local new = require "util.queue".new;
|
|
|
|
local q = new(10);
|
|
|
|
assert(q.size == 10);
|
|
assert(q:count() == 0);
|
|
|
|
assert(q:push("one"));
|
|
assert(q:push("two"));
|
|
assert(q:push("three"));
|
|
|
|
for i = 4, 10 do
|
|
print("pushing "..i)
|
|
assert(q:push("hello"));
|
|
assert(q:count() == i, "count is not "..i.."("..q:count()..")");
|
|
end
|
|
assert(q:push("hello") == nil, "queue overfull!");
|
|
assert(q:push("hello") == nil, "queue overfull!");
|
|
assert(q:pop() == "one", "queue item incorrect");
|
|
assert(q:pop() == "two", "queue item incorrect");
|
|
assert(q:push("hello"));
|
|
assert(q:push("hello"));
|
|
assert(q:pop() == "three", "queue item incorrect");
|
|
assert(q:push("hello"));
|
|
assert(q:push("hello") == nil, "queue overfull!");
|
|
assert(q:push("hello") == nil, "queue overfull!");
|
|
|
|
assert(q:count() == 10, "queue count incorrect");
|
|
|
|
for i = 1, 10 do
|
|
assert(q:pop() == "hello", "queue item incorrect");
|
|
end
|
|
|
|
assert(q:count() == 0, "queue count incorrect");
|
|
|
|
assert(q:push(1));
|
|
for i = 1, 1001 do
|
|
assert(q:pop() == i);
|
|
assert(q:count() == 0);
|
|
assert(q:push(i+1));
|
|
assert(q:count() == 1);
|
|
end
|
|
assert(q:pop() == 1002);
|
|
assert(q:push(1));
|
|
for i = 1, 1000000 do
|
|
q:pop();
|
|
q:push(i+1);
|
|
end
|
|
|
|
-- Test queues that purge old items when pushing to a full queue
|
|
local q = new(10, true);
|
|
|
|
for i = 1, 10 do
|
|
q:push(i);
|
|
end
|
|
|
|
assert(q:count() == 10);
|
|
|
|
assert(q:push(11));
|
|
assert(q:count() == 10);
|
|
assert(q:pop() == 2); -- First item should have been purged
|
|
|
|
for i = 12, 32 do
|
|
assert(q:push(i));
|
|
end
|
|
|
|
assert(q:count() == 10);
|
|
assert(q:pop() == 23);
|