Diff

spec/util_queue_spec.lua @ 9901:c8b75239846c

util.queue: Add 'consume()' convenience iterator
author Matthew Wild <mwild1@gmail.com>
date Sat, 23 Mar 2019 08:47:55 +0000
parent 8240:c803624cae3d
line wrap: on
line diff
--- a/spec/util_queue_spec.lua	Sat Mar 23 04:00:55 2019 +0100
+++ b/spec/util_queue_spec.lua	Sat Mar 23 08:47:55 2019 +0000
@@ -100,4 +100,41 @@
 
 		end);
 	end);
+	describe("consume()", function ()
+		it("should work", function ()
+			local q = queue.new(10);
+			for i = 1, 5 do
+				q:push(i);
+			end
+			local c = 0;
+			for i in q:consume() do
+				assert(i == c + 1);
+				assert(q:count() == (5-i));
+				c = i;
+			end
+		end);
+
+		it("should work even if items are pushed in the loop", function ()
+			local q = queue.new(10);
+			for i = 1, 5 do
+				q:push(i);
+			end
+			local c = 0;
+			for i in q:consume() do
+				assert(i == c + 1);
+				if c < 3 then
+					assert(q:count() == (5-i));
+				else
+					assert(q:count() == (6-i));
+				end
+
+				c = i;
+
+				if c == 3 then
+					q:push(6);
+				end
+			end
+			assert.equal(c, 6);
+		end);
+	end);
 end);