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