From 94e19dce41512e09c3a40d93bbe9f862e75fa74c Mon Sep 17 00:00:00 2001
From: Matthew Wild <mwild1@gmail.com>
Date: Sat, 17 Mar 2018 18:23:39 +0000
Subject: util.async: tests: Ensure done() can be called before wait()

---
 spec/util_async_spec.lua | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/spec/util_async_spec.lua b/spec/util_async_spec.lua
index 7cd125b7..5b27c17b 100644
--- a/spec/util_async_spec.lua
+++ b/spec/util_async_spec.lua
@@ -533,5 +533,23 @@ describe("util.async", function()
 			assert.equal(r1.state, "ready");
 			--for k, v in ipairs(l1) do print(k,v) end
 		end);
+
+		it("should allow done() to be called before wait()", function ()
+			local processed_item;
+			local rf = spy.new(function (item)
+				local wait, done = async.waiter();
+				done();
+				wait();
+				processed_item = item;
+			end);
+			local r = async.runner(rf, mock_watchers());
+			r:run("test");
+			assert.equal(processed_item, "test");
+			assert.equal(r.state, "ready");
+			-- Since the observable state did not change,
+			-- the watchers should not have been called
+			assert.spy(r.watchers.waiting).was_not.called();
+			assert.spy(r.watchers.ready).was_not.called();
+		end);
 	end);
 end);
-- 
cgit v1.2.3