aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/vim_spec.lua
diff options
context:
space:
mode:
authorMathias Fußenegger <mfussenegger@users.noreply.github.com>2023-06-08 12:11:24 +0200
committerGitHub <noreply@github.com>2023-06-08 12:11:24 +0200
commit7c661207cc4357553ed2b057b6c8f28400024361 (patch)
treef84c1082b2bbe5fc967c49a631aae8bc30b8dcd9 /test/functional/lua/vim_spec.lua
parent38b0bb3c93022afcc54c0891d2eced02d2a9fa3a (diff)
downloadrneovim-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.lua40
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()