Software /
code /
prosody
File
tests/test_util_queue.lua @ 7101:f83211f4d776
Merge 0.9->0.10
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 26 Jan 2016 14:15:00 +0100 |
parent | 6732:b5cf091d8c45 |
child | 7507:11e8c605a591 |
line wrap: on
line source
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);