103 lines
2.6 KiB
Lua
103 lines
2.6 KiB
Lua
|
-- luacheck: globals file
|
||
|
-- luacheck: new read globals node.LFS.resource
|
||
|
file = require("file_lfs")
|
||
|
|
||
|
local Nt = ...
|
||
|
Nt = (Nt or require "NTest")
|
||
|
|
||
|
-- check standard SPIFFS file functions
|
||
|
loadfile("NTest_file.lua")(Nt)
|
||
|
|
||
|
local N = Nt("file_lfs")
|
||
|
|
||
|
N.test('resource.lua in LFS', function()
|
||
|
ok(node.LFS.resource~=nil, "resource.lua embedded in LFS")
|
||
|
end)
|
||
|
|
||
|
local testfile = "index.html"
|
||
|
if node.LFS.resource("index.html") then
|
||
|
testfile = "index.html"
|
||
|
elseif node.LFS.resource("favicon.ico") then
|
||
|
testfile = "favicon.ico"
|
||
|
elseif node.LFS.resource("test.txt") then
|
||
|
testfile = "test.txt"
|
||
|
else
|
||
|
error "No 'index.html' nor 'favicon.ico' nor 'text.txt' file stored in LFS resource module. Can't run LFS file tests."
|
||
|
end
|
||
|
|
||
|
N.test('exist file LFS', function()
|
||
|
ok(file.exists(testfile), "existing file")
|
||
|
end)
|
||
|
|
||
|
N.test('getcontents file LFS', function()
|
||
|
local testcontent = node.LFS.resource(testfile)
|
||
|
local content = file.getcontents(testfile)
|
||
|
ok(eq(testcontent, content),"contents")
|
||
|
end)
|
||
|
|
||
|
N.test('read more than 1K file LFS', function()
|
||
|
local f = file.open(testfile,"r")
|
||
|
local size = #node.LFS.resource(testfile)
|
||
|
local buffer = f:read()
|
||
|
print(#buffer)
|
||
|
ok(eq(#buffer < 1024 and size or 1024, 1024), "first block")
|
||
|
buffer = f:read()
|
||
|
f:close()
|
||
|
ok(eq(#buffer, size-1024 > 1024 and 1024 or size-1024), "second block")
|
||
|
end)
|
||
|
|
||
|
N.test('open existing file LFS', function()
|
||
|
file.remove(testfile)
|
||
|
|
||
|
local function testopen(mode, position)
|
||
|
file.putcontents(testfile, "testcontent")
|
||
|
ok(file.open(testfile, mode), mode)
|
||
|
file.write("")
|
||
|
ok(eq(file.seek(), position), "seek check")
|
||
|
file.close()
|
||
|
end
|
||
|
|
||
|
testopen("r", 0)
|
||
|
testopen("w", 0)
|
||
|
file.remove(testfile)
|
||
|
testopen("a", 11)
|
||
|
file.remove(testfile)
|
||
|
testopen("r+", 0)
|
||
|
file.remove(testfile)
|
||
|
testopen("w+", 0)
|
||
|
file.remove(testfile)
|
||
|
testopen("a+", 11)
|
||
|
file.remove(testfile)
|
||
|
end)
|
||
|
|
||
|
N.test('seek file LFS', function()
|
||
|
|
||
|
local testcontent = node.LFS.resource(testfile)
|
||
|
local content
|
||
|
|
||
|
local f = file.open(testfile)
|
||
|
f:seek("set", 0)
|
||
|
content = f:read(10)
|
||
|
ok(eq(testcontent:sub(1,10), content),"set 0")
|
||
|
|
||
|
f:seek("set", 99)
|
||
|
content = f:read(10)
|
||
|
ok(eq(testcontent:sub(100,109), content),"set 100")
|
||
|
|
||
|
f:seek("cur", 10)
|
||
|
content = f:read(10)
|
||
|
ok(eq(testcontent:sub(120,129), content),"cur 10")
|
||
|
|
||
|
f:seek("cur", -50)
|
||
|
content = f:read(10)
|
||
|
ok(eq(testcontent:sub(80,89), content),"cur -50")
|
||
|
|
||
|
f:seek("end", -50)
|
||
|
content = f:read(10)
|
||
|
ok(eq(testcontent:sub(#testcontent+1-50,#testcontent+1-41), content),"end -50")
|
||
|
end)
|
||
|
|
||
|
N.test('rename file LFS', function()
|
||
|
nok(file.rename(testfile, "testfile"), "cannot rename LFS file")
|
||
|
end)
|