NTest_file_lfs.lua 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. -- luacheck: globals file
  2. -- luacheck: new read globals node.LFS.resource
  3. file = require("file_lfs")
  4. local Nt = ...
  5. Nt = (Nt or require "NTest")
  6. -- check standard SPIFFS file functions
  7. loadfile("NTest_file.lua")(Nt)
  8. local N = Nt("file_lfs")
  9. N.test('resource.lua in LFS', function()
  10. ok(node.LFS.resource~=nil, "resource.lua embedded in LFS")
  11. end)
  12. local testfile = "index.html"
  13. if node.LFS.resource("index.html") then
  14. testfile = "index.html"
  15. elseif node.LFS.resource("favicon.ico") then
  16. testfile = "favicon.ico"
  17. elseif node.LFS.resource("test.txt") then
  18. testfile = "test.txt"
  19. else
  20. error "No 'index.html' nor 'favicon.ico' nor 'text.txt' file stored in LFS resource module. Can't run LFS file tests."
  21. end
  22. N.test('exist file LFS', function()
  23. ok(file.exists(testfile), "existing file")
  24. end)
  25. N.test('getcontents file LFS', function()
  26. local testcontent = node.LFS.resource(testfile)
  27. local content = file.getcontents(testfile)
  28. ok(eq(testcontent, content),"contents")
  29. end)
  30. N.test('read more than 1K file LFS', function()
  31. local f = file.open(testfile,"r")
  32. local size = #node.LFS.resource(testfile)
  33. local buffer = f:read()
  34. print(#buffer)
  35. ok(eq(#buffer < 1024 and size or 1024, 1024), "first block")
  36. buffer = f:read()
  37. f:close()
  38. ok(eq(#buffer, size-1024 > 1024 and 1024 or size-1024), "second block")
  39. end)
  40. N.test('open existing file LFS', function()
  41. file.remove(testfile)
  42. local function testopen(mode, position)
  43. file.putcontents(testfile, "testcontent")
  44. ok(file.open(testfile, mode), mode)
  45. file.write("")
  46. ok(eq(file.seek(), position), "seek check")
  47. file.close()
  48. end
  49. testopen("r", 0)
  50. testopen("w", 0)
  51. file.remove(testfile)
  52. testopen("a", 11)
  53. file.remove(testfile)
  54. testopen("r+", 0)
  55. file.remove(testfile)
  56. testopen("w+", 0)
  57. file.remove(testfile)
  58. testopen("a+", 11)
  59. file.remove(testfile)
  60. end)
  61. N.test('seek file LFS', function()
  62. local testcontent = node.LFS.resource(testfile)
  63. local content
  64. local f = file.open(testfile)
  65. f:seek("set", 0)
  66. content = f:read(10)
  67. ok(eq(testcontent:sub(1,10), content),"set 0")
  68. f:seek("set", 99)
  69. content = f:read(10)
  70. ok(eq(testcontent:sub(100,109), content),"set 100")
  71. f:seek("cur", 10)
  72. content = f:read(10)
  73. ok(eq(testcontent:sub(120,129), content),"cur 10")
  74. f:seek("cur", -50)
  75. content = f:read(10)
  76. ok(eq(testcontent:sub(80,89), content),"cur -50")
  77. f:seek("end", -50)
  78. content = f:read(10)
  79. ok(eq(testcontent:sub(#testcontent+1-50,#testcontent+1-41), content),"end -50")
  80. end)
  81. N.test('rename file LFS', function()
  82. nok(file.rename(testfile, "testfile"), "cannot rename LFS file")
  83. end)