From edb6956ad524febe58d5575d0bf42b4a7ddabc1c Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Sun, 12 Sep 2021 10:50:20 +0100 Subject: util.array: Add :slice() method + tests Behaviour follows the same logic as string.sub (so yes, 1-indexed). --- spec/util_array_spec.lua | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'spec') diff --git a/spec/util_array_spec.lua b/spec/util_array_spec.lua index 1d9da947..ff049d0e 100644 --- a/spec/util_array_spec.lua +++ b/spec/util_array_spec.lua @@ -148,6 +148,25 @@ describe("util.array", function () end); end); + describe("slice", function () + it("works", function () + local a = array({ "a", "b", "c" }); + assert.equal(array.slice(a, 1, 2), array{ "a", "b" }); + assert.equal(array.slice(a, 1, 3), array{ "a", "b", "c" }); + assert.equal(array.slice(a, 2, 3), array{ "b", "c" }); + assert.equal(array.slice(a, 2), array{ "b", "c" }); + assert.equal(array.slice(a, -4), array{ "a", "b", "c" }); + assert.equal(array.slice(a, -3), array{ "a", "b", "c" }); + assert.equal(array.slice(a, -2), array{ "b", "c" }); + assert.equal(array.slice(a, -1), array{ "c" }); + end); + + it("can mutate", function () + local a = array({ "a", "b", "c" }); + assert.equal(a:slice(-1), array{"c"}); + assert.equal(a, array{"c"}); + end); + end); end); -- TODO The various array.foo(array ina, array outa) functions -- cgit v1.2.3