vis
a vi-like editor based on Plan 9's structural regular expressions
git clone https://9o.is/git/vis.git
lines.lua
(2071B)
1
2 local file = vis.win.file
3
4 describe("file.lines_iterator()", function()
5
6 it("same as file.lines[]", function()
7 local i = 1
8 local iterator_lines = {}
9 for line in file:lines_iterator() do
10 iterator_lines[i] = line
11 i = i + 1
12 end
13 local array_lines = {}
14 for j = 1, #file.lines do
15 array_lines[j] = file.lines[j]
16 end
17 assert.are.same(array_lines, iterator_lines)
18 end)
19 end)
20
21 describe("get file.lines[]", function()
22
23 it("#lines", function()
24 assert.are.equal(5, #file.lines)
25 end)
26
27 it("get lines[0]", function()
28 -- is that what we want?
29 assert.are.equal(file.lines[0], file.lines[1])
30 end)
31
32 it("get lines[1]", function()
33 assert.are.equal("1", file.lines[1])
34 end)
35
36 it("get empty \n line", function()
37 assert.are.equal("", file.lines[2])
38 end)
39
40 it("get empty \r\n line", function()
41 assert.are.equal("\r", file.lines[4])
42 end)
43
44 it("get lines[#lines]", function()
45 assert.are.equal("5", file.lines[#file.lines])
46 end)
47
48 it("get lines[#lines+1]", function()
49 -- is that what we want?
50 assert.are.equal("5", file.lines[#file.lines])
51 end)
52
53 end)
54
55 describe("set file.lines[]", function()
56
57 it("replace empty \n line", function()
58 local new = "line 2"
59 file.lines[2] = new
60 assert.are.equal(new, file.lines[2])
61 end)
62
63 --[[
64 it("replace empty \r\n line", function()
65 local new = "line 4"
66 file.lines[4] = new
67 assert.are.equal(new, file.lines[4])
68 end)
69 --]]
70
71 it("set lines[0], add new line at start", function()
72 local lines = #file.lines
73 local new_first = "new first line"
74 local old_first = file.lines[1]
75 file.lines[0] = new_first
76 assert.are.equal(lines+1, #file.lines)
77 assert.are.equal(new_first, file.lines[1])
78 assert.are.equal(old_first, file.lines[2])
79 end)
80
81 it("set lines[#lines+1], add new line at end", function()
82 local lines = #file.lines
83 local new_last = "new last line"
84 local old_last = file.lines[#file.lines]
85 file.lines[#file.lines+1] = new_last
86 assert.are.equal(lines+1, #file.lines)
87 assert.are.equal(new_last, file.lines[#file.lines])
88 assert.are.equal(old_last, file.lines[lines])
89 end)
90
91 end)
92