Comparison

spec/util_queue_spec.lua @ 8236:4878e4159e12

Port tests to the `busted` test runner
author Waqas Hussain <waqas20@gmail.com>
date Fri, 15 Sep 2017 17:07:57 -0400
child 8240:c803624cae3d
comparison
equal deleted inserted replaced
8235:7d9a2c200736 8236:4878e4159e12
1
2 local queue = require "util.queue";
3
4 describe("util.queue", function()
5 describe("#new()", function()
6 it("should work", function()
7
8 do
9 local q = queue.new(10);
10
11 assert.are.equal(q.size, 10);
12 assert.are.equal(q:count(), 0);
13
14 assert.is_true(q:push("one"));
15 assert.is_true(q:push("two"));
16 assert.is_true(q:push("three"));
17
18 for i = 4, 10 do
19 assert.is_true(q:push("hello"));
20 assert.are.equal(q:count(), i, "count is not "..i.."("..q:count()..")");
21 end
22 assert.are.equal(q:push("hello"), nil, "queue overfull!");
23 assert.are.equal(q:push("hello"), nil, "queue overfull!");
24 assert.are.equal(q:pop(), "one", "queue item incorrect");
25 assert.are.equal(q:pop(), "two", "queue item incorrect");
26 assert.is_true(q:push("hello"));
27 assert.is_true(q:push("hello"));
28 assert.are.equal(q:pop(), "three", "queue item incorrect");
29 assert.is_true(q:push("hello"));
30 assert.are.equal(q:push("hello"), nil, "queue overfull!");
31 assert.are.equal(q:push("hello"), nil, "queue overfull!");
32
33 assert.are.equal(q:count(), 10, "queue count incorrect");
34
35 for _ = 1, 10 do
36 assert.are.equal(q:pop(), "hello", "queue item incorrect");
37 end
38
39 assert.are.equal(q:count(), 0, "queue count incorrect");
40
41 assert.is_true(q:push(1));
42 for i = 1, 1001 do
43 assert.are.equal(q:pop(), i);
44 assert.are.equal(q:count(), 0);
45 assert.is_true(q:push(i+1));
46 assert.are.equal(q:count(), 1);
47 end
48 assert.are.equal(q:pop(), 1002);
49 assert.is_true(q:push(1));
50 for i = 1, 1000 do
51 assert.are.equal(q:pop(), i);
52 assert.is_true(q:push(i+1));
53 end
54 assert.are.equal(q:pop(), 1001);
55 assert.are.equal(q:count(), 0);
56 end
57
58 do
59 -- Test queues that purge old items when pushing to a full queue
60 local q = queue.new(10, true);
61
62 for i = 1, 10 do
63 q:push(i);
64 end
65
66 assert.are.equal(q:count(), 10);
67
68 assert.is_true(q:push(11));
69 assert.are.equal(q:count(), 10);
70 assert.are.equal(q:pop(), 2); -- First item should have been purged
71
72 for i = 12, 32 do
73 assert.is_true(q:push(i));
74 end
75
76 assert.are.equal(q:count(), 10);
77 assert.are.equal(q:pop(), 23);
78 end
79
80 end);
81 end);
82 end);