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);