Software /
code /
prosody
Comparison
tests/test_util_queue.lua @ 7510:8a0a50e8ef2d
Merge 0.10->trunk
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 21 Jul 2016 12:24:18 +0100 |
parent | 7509:d4bd036e679b |
comparison
equal
deleted
inserted
replaced
7506:8cca24bea3e0 | 7510:8a0a50e8ef2d |
---|---|
1 local new = require "util.queue".new; | |
2 | 1 |
3 local q = new(10); | 2 function new(new) |
3 do | |
4 local q = new(10); | |
4 | 5 |
5 assert(q.size == 10); | 6 assert_equal(q.size, 10); |
6 assert(q:count() == 0); | 7 assert_equal(q:count(), 0); |
7 | 8 |
8 assert(q:push("one")); | 9 assert_is(q:push("one")); |
9 assert(q:push("two")); | 10 assert_is(q:push("two")); |
10 assert(q:push("three")); | 11 assert_is(q:push("three")); |
11 | 12 |
12 for i = 4, 10 do | 13 for i = 4, 10 do |
13 print("pushing "..i) | 14 assert_is(q:push("hello")); |
14 assert(q:push("hello")); | 15 assert_equal(q:count(), i, "count is not "..i.."("..q:count()..")"); |
15 assert(q:count() == i, "count is not "..i.."("..q:count()..")"); | 16 end |
17 assert_equal(q:push("hello"), nil, "queue overfull!"); | |
18 assert_equal(q:push("hello"), nil, "queue overfull!"); | |
19 assert_equal(q:pop(), "one", "queue item incorrect"); | |
20 assert_equal(q:pop(), "two", "queue item incorrect"); | |
21 assert_is(q:push("hello")); | |
22 assert_is(q:push("hello")); | |
23 assert_equal(q:pop(), "three", "queue item incorrect"); | |
24 assert_is(q:push("hello")); | |
25 assert_equal(q:push("hello"), nil, "queue overfull!"); | |
26 assert_equal(q:push("hello"), nil, "queue overfull!"); | |
27 | |
28 assert_equal(q:count(), 10, "queue count incorrect"); | |
29 | |
30 for _ = 1, 10 do | |
31 assert_equal(q:pop(), "hello", "queue item incorrect"); | |
32 end | |
33 | |
34 assert_equal(q:count(), 0, "queue count incorrect"); | |
35 | |
36 assert_is(q:push(1)); | |
37 for i = 1, 1001 do | |
38 assert_equal(q:pop(), i); | |
39 assert_equal(q:count(), 0); | |
40 assert_is(q:push(i+1)); | |
41 assert_equal(q:count(), 1); | |
42 end | |
43 assert_equal(q:pop(), 1002); | |
44 assert_is(q:push(1)); | |
45 for i = 1, 1000 do | |
46 assert_equal(q:pop(), i); | |
47 assert_is(q:push(i+1)); | |
48 end | |
49 assert_equal(q:pop(), 1001); | |
50 assert_equal(q:count(), 0); | |
51 end | |
52 | |
53 do | |
54 -- Test queues that purge old items when pushing to a full queue | |
55 local q = new(10, true); | |
56 | |
57 for i = 1, 10 do | |
58 q:push(i); | |
59 end | |
60 | |
61 assert_equal(q:count(), 10); | |
62 | |
63 assert_is(q:push(11)); | |
64 assert_equal(q:count(), 10); | |
65 assert_equal(q:pop(), 2); -- First item should have been purged | |
66 | |
67 for i = 12, 32 do | |
68 assert_is(q:push(i)); | |
69 end | |
70 | |
71 assert_equal(q:count(), 10); | |
72 assert_equal(q:pop(), 23); | |
73 end | |
16 end | 74 end |
17 assert(q:push("hello") == nil, "queue overfull!"); | |
18 assert(q:push("hello") == nil, "queue overfull!"); | |
19 assert(q:pop() == "one", "queue item incorrect"); | |
20 assert(q:pop() == "two", "queue item incorrect"); | |
21 assert(q:push("hello")); | |
22 assert(q:push("hello")); | |
23 assert(q:pop() == "three", "queue item incorrect"); | |
24 assert(q:push("hello")); | |
25 assert(q:push("hello") == nil, "queue overfull!"); | |
26 assert(q:push("hello") == nil, "queue overfull!"); | |
27 | |
28 assert(q:count() == 10, "queue count incorrect"); | |
29 | |
30 for i = 1, 10 do | |
31 assert(q:pop() == "hello", "queue item incorrect"); | |
32 end | |
33 | |
34 assert(q:count() == 0, "queue count incorrect"); | |
35 | |
36 assert(q:push(1)); | |
37 for i = 1, 1001 do | |
38 assert(q:pop() == i); | |
39 assert(q:count() == 0); | |
40 assert(q:push(i+1)); | |
41 assert(q:count() == 1); | |
42 end | |
43 assert(q:pop() == 1002); | |
44 assert(q:push(1)); | |
45 for i = 1, 1000000 do | |
46 q:pop(); | |
47 q:push(i+1); | |
48 end | |
49 | |
50 -- Test queues that purge old items when pushing to a full queue | |
51 local q = new(10, true); | |
52 | |
53 for i = 1, 10 do | |
54 q:push(i); | |
55 end | |
56 | |
57 assert(q:count() == 10); | |
58 | |
59 assert(q:push(11)); | |
60 assert(q:count() == 10); | |
61 assert(q:pop() == 2); -- First item should have been purged | |
62 | |
63 for i = 12, 32 do | |
64 assert(q:push(i)); | |
65 end | |
66 | |
67 assert(q:count() == 10); | |
68 assert(q:pop() == 23); |