Software /
code /
prosody
File
tests/test_util_queue.lua @ 6945:d779c55058c6
util.cache: Small update to prefix private fields with an underscore, add a :count() method (same as util.queue) and add an optional on_evict callback
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 26 Nov 2015 00:07:48 +0000 |
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);