diff options
author | Mathias Fußenegger <mfussenegger@users.noreply.github.com> | 2023-06-08 12:11:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-08 12:11:24 +0200 |
commit | 7c661207cc4357553ed2b057b6c8f28400024361 (patch) | |
tree | f84c1082b2bbe5fc967c49a631aae8bc30b8dcd9 /test/functional/lua/vim_spec.lua | |
parent | 38b0bb3c93022afcc54c0891d2eced02d2a9fa3a (diff) | |
download | rneovim-7c661207cc4357553ed2b057b6c8f28400024361.tar.gz rneovim-7c661207cc4357553ed2b057b6c8f28400024361.tar.bz2 rneovim-7c661207cc4357553ed2b057b6c8f28400024361.zip |
feat(lua): add ringbuffer (#22894)
https://en.wikipedia.org/wiki/Circular_buffer
Diffstat (limited to 'test/functional/lua/vim_spec.lua')
-rw-r--r-- | test/functional/lua/vim_spec.lua | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/test/functional/lua/vim_spec.lua b/test/functional/lua/vim_spec.lua index 55c03e21b3..d5f550a5d1 100644 --- a/test/functional/lua/vim_spec.lua +++ b/test/functional/lua/vim_spec.lua @@ -3040,6 +3040,46 @@ describe('lua stdlib', function() eq(4, exec_lua [[ return vim.re.match("abcde", '[a-c]+') ]]) end) + + it("vim.ringbuf", function() + local results = exec_lua([[ + local ringbuf = vim.ringbuf(3) + ringbuf:push("a") -- idx: 0 + local peeka1 = ringbuf:peek() + local peeka2 = ringbuf:peek() + local popa = ringbuf:pop() + local popnil = ringbuf:pop() + ringbuf:push("a") -- idx: 1 + ringbuf:push("b") -- idx: 2 + + -- doesn't read last added item, but uses separate read index + local pop_after_add_b = ringbuf:pop() + + ringbuf:push("c") -- idx: 3 wraps around, overrides idx: 0 "a" + ringbuf:push("d") -- idx: 4 wraps around, overrides idx: 1 "a" + return { + peeka1 = peeka1, + peeka2 = peeka2, + pop1 = popa, + pop2 = popnil, + pop3 = ringbuf:pop(), + pop4 = ringbuf:pop(), + pop5 = ringbuf:pop(), + pop_after_add_b = pop_after_add_b, + } + ]]) + local expected = { + peeka1 = "a", + peeka2 = "a", + pop1 = "a", + pop2 = nil, + pop3 = "b", + pop4 = "c", + pop5 = "d", + pop_after_add_b = "a", + } + eq(expected, results) + end) end) describe('lua: builtin modules', function() |