123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- local N = ...
- N = (N or require "NTest")("file")
- local function cleanup()
- file.remove("testfile")
- file.remove("testfile2")
- local testfiles = {"testfile1&", "testFILE2"}
- for _, n in ipairs(testfiles) do
- file.remove(n,n)
- end
- end
- N.test('exist', function()
- cleanup()
- nok(file.exists("non existing file"), "non existing file")
- file.putcontents("testfile", "testcontents")
- ok(file.exists("testfile"), "existing file")
- end)
- N.test('fscfg', function()
- cleanup()
- local start, size = file.fscfg()
- ok(start, "start")
- ok(size, "size")
- end)
- N.test('fsinfo', function()
- cleanup()
- local remaining, used, total = file.fsinfo()
- ok(remaining, "remaining")
- ok(used, "used")
- ok(total, "total")
- ok(eq(remaining+used, total), "size maths")
- end)
- N.test('getcontents', function()
- cleanup()
- local testcontent = "some content \0 and more"
- file.putcontents("testfile", testcontent)
- local content = file.getcontents("testfile")
- ok(eq(testcontent, content),"contents")
- end)
- N.test('getcontents non existent file', function()
- cleanup()
- nok(file.getcontents("non existing file"), "non existent file")
- end)
- N.test('getcontents more than 1K', function()
- cleanup()
- local f = file.open("testfile", "w")
- for i = 1,100 do -- luacheck: ignore
- f:write("some text to test")
- end
- f:close()
- local content = file.getcontents("testfile")
- ok(eq(#content, 1700), "long contents")
- end)
- N.test('read more than 1K', function()
- cleanup()
- local f = file.open("testfile", "w")
- for i = 1,100 do -- luacheck: ignore
- f:write("some text to test")
- end
- f:close()
- f = file.open("testfile","r")
- local buffer = f:read()
- ok(eq(#buffer, 1024), "first block")
- buffer = f:read()
- f:close()
- ok(eq(#buffer, 1700-1024), "second block")
- end)
- local function makefile(name, num128)
- local s128 = "16 bytes written"
- s128 = s128..s128..s128..s128
- s128 = s128..s128
- local f = file.open(name, "w")
- for i = 1, num128 do -- luacheck: ignore
- f:write(s128)
- end
- f:close()
- end
- N.test('read 7*128 bytes', function()
- cleanup()
- makefile("testfile", 7)
- local f = file.open("testfile","r")
- local buffer = f:read()
- f:close()
- nok(eq(buffer, nil), "nil first block")
- ok(eq(#buffer, 128*7), "length first block")
- end)
- N.test('read 8*128 bytes long file', function()
- cleanup()
- makefile("testfile", 8)
- local f = file.open("testfile","r")
- local buffer = f:read()
- nok(eq(buffer, nil), "nil first block")
- ok(eq(#buffer, 128*8), "size first block")
- buffer = f:read()
- f:close()
- ok(eq(buffer, nil), "nil second block")
- end)
- N.test('read 9*128 bytes', function()
- cleanup()
- makefile("testfile", 9)
- local f = file.open("testfile","r")
- local buffer = f:read()
- nok(eq(buffer, nil), "nil first block")
- ok(eq(#buffer, 1024), "size first block")
- buffer = f:read()
- f:close()
- nok(eq(buffer, nil), "nil second block")
- ok(eq(#buffer, 128*9-1024), "size second block")
- end)
- N.test('list', function()
- cleanup()
- local function count(files)
- local filecount = 0
- for _,_ in pairs(files) do filecount = filecount+1 end
- return filecount
- end
- local files
- local function testfile(name)
- ok(eq(files[name],#name), "length matches name length")
- end
- local testfiles = {"testfile1&", "testFILE2"}
- for _, n in ipairs(testfiles) do
- file.putcontents(n,n)
- end
- files = file.list("testfile%.*")
- ok(eq(count(files), 1), "found file")
- testfile("testfile1&")
- files = file.list("^%l*%u+%d%.-")
- ok(eq(count(files), 1), "found file regexp")
- testfile("testFILE2")
- files = file.list()
- ok(count(files) >= 2, "several files found")
- end)
- N.test('open non existing', function()
- cleanup()
- local function testopen(test, filename, mode)
- test(file.open(filename, mode), mode)
- file.close()
- file.remove(filename)
- end
- testopen(nok, "testfile", "r")
- testopen(ok, "testfile", "w")
- testopen(ok, "testfile", "a")
- testopen(nok, "testfile", "r+")
- testopen(ok, "testfile", "w+")
- testopen(ok, "testfile", "a+")
- end)
- N.test('open existing', function()
- cleanup()
- 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)
- testopen("a", 11)
- testopen("r+", 0)
- testopen("w+", 0)
- testopen("a+", 11)
- end)
- N.test('remove', function()
- cleanup()
- file.putcontents("testfile", "testfile")
- ok(file.remove("testfile") == nil, "existing file")
- ok(file.remove("testfile") == nil, "non existing file")
- end)
- N.test('rename', function()
- cleanup()
- file.putcontents("testfile", "testfile")
- ok(file.rename("testfile", "testfile2"), "rename existing")
- nok(file.exists("testfile"), "old file removed")
- ok(file.exists("testfile2"), "new file exists")
- nok(file.rename("testfile", "testfile3"), "rename non existing")
- file.putcontents("testfile", "testfile")
- nok(file.rename("testfile", "testfile2"), "rename to existing")
- ok(file.exists("testfile"), "from file exists")
- ok(file.exists("testfile2"), "to file exists")
- end)
- N.test('stat existing file', function()
- cleanup()
- file.putcontents("testfile", "testfile")
- local stat = file.stat("testfile")
- ok(stat, "stat existing")
- ok(eq(stat.size, 8), "size")
- ok(eq(stat.name, "testfile"), "name")
- ok(stat.time, "no time")
- ok(eq(stat.time.year, 1970), "year")
- ok(eq(stat.time.mon, 01), "mon")
- ok(eq(stat.time.day, 01), "day")
- ok(eq(stat.time.hour, 0), "hour")
- ok(eq(stat.time.min, 0), "min")
- ok(eq(stat.time.sec, 0), "sec")
- nok(stat.is_dir, "is_dir")
- nok(stat.is_rdonly, "is_rdonly")
- nok(stat.is_hidden, "is_hidden")
- nok(stat.is_sys, "is_sys")
- nok(stat.is_arch, "is_arch")
- end)
- N.test('stat non existing file', function()
- cleanup()
- local stat = file.stat("not existing file")
- ok(stat == nil, "stat empty")
- end)
|