fix and add test chunking with identity function
parent
e1fbe12587
commit
7b79288b2d
|
@ -1204,8 +1204,8 @@ function M.chunk(array, f)
|
|||
local ch, ck, prev, val = {}, 0
|
||||
for k,v in ipairs(array) do
|
||||
val = f(v, k)
|
||||
prev = (prev==nil) and val or prev
|
||||
ck = ((val~=prev) and (ck+1) or ck)
|
||||
prev = (prev==nil) and val or prev
|
||||
if not ch[ck] then
|
||||
ch[ck] = {array[k]}
|
||||
else
|
||||
|
|
|
@ -380,6 +380,17 @@ describe('Array functions specs', function()
|
|||
assert.is_true(M.isEqual(v[3], {3,3}))
|
||||
assert.is_true(M.isEqual(v[4], {4,4}))
|
||||
end)
|
||||
|
||||
it('chunks in blocks consecutive values when using identity as function', function()
|
||||
local t = {1,1,2,2,3,3,4}
|
||||
local v = M.chunk(t, function(v) return v end)
|
||||
assert.is_nil(v[0])
|
||||
assert.equal(#v, 4)
|
||||
assert.is_true(M.isEqual(v[1], {1,1}))
|
||||
assert.is_true(M.isEqual(v[2], {2,2}))
|
||||
assert.is_true(M.isEqual(v[3], {3,3}))
|
||||
assert.is_true(M.isEqual(v[4], {4}))
|
||||
end)
|
||||
|
||||
end)
|
||||
|
||||
|
|
Loading…
Reference in New Issue