From 3802dc1555643ca6ab57593c47457346ab11ca98 Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sat, 17 Mar 2018 11:47:07 +0000 Subject: util.async: Yet more tests --- spec/util_async_spec.lua | 52 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) (limited to 'spec/util_async_spec.lua') diff --git a/spec/util_async_spec.lua b/spec/util_async_spec.lua index bc6e04f8..e4e74e80 100644 --- a/spec/util_async_spec.lua +++ b/spec/util_async_spec.lua @@ -32,6 +32,58 @@ describe("util.async", function() assert.equal(r.state, "ready"); end); + it("should do nothing if the queue is empty", function () + local did_run; + local r = async.runner(function (item) did_run = true end); + r:run(); + assert.equal(r.state, "ready"); + assert.is_nil(did_run); + r:run("hello"); + assert.is_true(did_run); + end); + + it("should support queuing work items without running", function () + local did_run; + local r = async.runner(function (item) did_run = true end); + r:enqueue("hello"); + assert.equal(r.state, "ready"); + assert.is_nil(did_run); + r:run(); + assert.is_true(did_run); + end); + + it("should support queuing multiple work items", function () + local last_item; + local s = spy(function (item) last_item = item; end); + local r = async.runner(s); + r:enqueue("hello"); + r:enqueue("there"); + r:enqueue("world"); + assert.equal(r.state, "ready"); + r:run(); + assert.equal(r.state, "ready"); + assert.spy(s).was.called(3); + assert.equal(last_item, "world"); + end); + + it("should support all simple data types", function () + local last_item; + local s = spy(function (item) last_item = item; end); + local r = async.runner(s); + local values = { {}, 123, "hello", true, false }; + for i = 1, #values do + r:enqueue(values[i]); + end + assert.equal(r.state, "ready"); + r:run(); + assert.equal(r.state, "ready"); + assert.spy(s).was.called(#values); + for i = 1, #values do + assert.spy(s).was.called_with(values[i]); + end + assert.equal(last_item, values[#values]); + end); + describe("#errors", function () local last_processed_item, last_error; local r; -- cgit v1.2.3