spec/util_async_spec.lua
changeset 8627 5325f0e1791b
parent 8626 ab242c513bf4
child 8631 e88744fa0985
--- a/spec/util_async_spec.lua	Sat Mar 17 18:12:31 2018 +0000
+++ b/spec/util_async_spec.lua	Sat Mar 17 18:23:39 2018 +0000
@@ -533,5 +533,23 @@
 			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);