test/sam: add tests for empty matches at the end of a range
[vis-test.git] / lua / lines.lua
blob745e8b055c481b228101c3739cae5528085a2bcb
1 require 'busted.runner'()
3 local file = vis.win.file
5 describe("file.lines_iterator()", function()
7 it("same as file.lines[]", function()
8 local i = 1
9 local iterator_lines = {}
10 for line in file:lines_iterator() do
11 iterator_lines[i] = line
12 i = i + 1
13 end
14 local array_lines = {}
15 for j = 1, #file.lines do
16 array_lines[j] = file.lines[j]
17 end
18 assert.are.same(array_lines, iterator_lines)
19 end)
20 end)
22 describe("get file.lines[]", function()
24 it("#lines", function()
25 assert.are.equals(5, #file.lines)
26 end)
28 it("get lines[0]", function()
29 -- is that what we want?
30 assert.are.equals(file.lines[0], file.lines[1])
31 end)
33 it("get lines[1]", function()
34 assert.are.equals("1", file.lines[1])
35 end)
37 it("get empty \n line", function()
38 assert.are.equals("", file.lines[2])
39 end)
41 it("get empty \r\n line", function()
42 assert.are.equals("\r", file.lines[4])
43 end)
45 it("get lines[#lines]", function()
46 assert.are.equals("5", file.lines[#file.lines])
47 end)
49 it("get lines[#lines+1]", function()
50 -- is that what we want?
51 assert.are.equals("5", file.lines[#file.lines])
52 end)
54 end)
56 describe("set file.lines[]", function()
58 it("replace empty \n line", function()
59 local new = "line 2"
60 file.lines[2] = new
61 assert.are.equals(new, file.lines[2])
62 end)
64 --[[
65 it("replace empty \r\n line", function()
66 local new = "line 4"
67 file.lines[4] = new
68 assert.are.equals(new, file.lines[4])
69 end)
70 --]]
72 it("set lines[0], add new line at start", function()
73 local lines = #file.lines
74 local new_first = "new first line"
75 local old_first = file.lines[1]
76 file.lines[0] = new_first
77 assert.are.equals(lines+1, #file.lines)
78 assert.are.equals(new_first, file.lines[1])
79 assert.are.equals(old_first, file.lines[2])
80 end)
82 it("set lines[#lines+1], add new line at end", function()
83 local lines = #file.lines
84 local new_last = "new last line"
85 local old_last = file.lines[#file.lines]
86 file.lines[#file.lines+1] = new_last
87 assert.are.equals(lines+1, #file.lines)
88 assert.are.equals(new_last, file.lines[#file.lines])
89 assert.are.equals(old_last, file.lines[lines])
90 end)
92 end)