From 4e56658eb3564a41d1014e5ee89cd01c8004252e Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Tue, 29 Jun 2021 13:48:14 +0100 Subject: util.dbuffer: Add read_until() method --- spec/util_dbuffer_spec.lua | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'spec') diff --git a/spec/util_dbuffer_spec.lua b/spec/util_dbuffer_spec.lua index 2b1af835..aa31da55 100644 --- a/spec/util_dbuffer_spec.lua +++ b/spec/util_dbuffer_spec.lua @@ -36,6 +36,50 @@ describe("util.dbuffer", function () end); end); + describe(":read_until", function () + it("works", function () + local b = dbuffer.new(); + b:write("hello\n"); + b:write("world"); + b:write("\n"); + b:write("\n\n"); + b:write("stuff"); + b:write("more\nand more"); + + assert.equal(nil, b:read_until(".")); + assert.equal(nil, b:read_until("%")); + assert.equal("hello\n", b:read_until("\n")); + assert.equal("world\n", b:read_until("\n")); + assert.equal("\n", b:read_until("\n")); + assert.equal("\n", b:read_until("\n")); + assert.equal("stu", b:read(3)); + assert.equal("ffmore\n", b:read_until("\n")); + assert.equal(nil, b:read_until("\n")); + assert.equal("and more", b:read_chunk()); + end); + + it("works with multi-character sequences", function () + local b = dbuffer.new(); + b:write("hello\r\n"); + b:write("world"); + b:write("\r\n"); + b:write("\r\n\r\n"); + b:write("stuff"); + b:write("more\r\nand more"); + + assert.equal(nil, b:read_until(".")); + assert.equal(nil, b:read_until("%")); + assert.equal("hello\r\n", b:read_until("\r\n")); + assert.equal("world\r\n", b:read_until("\r\n")); + assert.equal("\r\n", b:read_until("\r\n")); + assert.equal("\r\n", b:read_until("\r\n")); + assert.equal("stu", b:read(3)); + assert.equal("ffmore\r\n", b:read_until("\r\n")); + assert.equal(nil, b:read_until("\r\n")); + assert.equal("and more", b:read_chunk()); + end); + end); + describe(":discard", function () local b = dbuffer.new(); it("works", function () -- cgit v1.2.3