38 lines
1.1 KiB
Lua
38 lines
1.1 KiB
Lua
local createLibTest = require('/apis/libtest');
|
|
local createMusic = require('/apis/libmusic');
|
|
|
|
local testlib = createLibTest({ ... });
|
|
|
|
local function fakeFs(dir, entries)
|
|
return {
|
|
isDir = function(path) return path == dir; end,
|
|
list = function(path)
|
|
if path ~= dir then error('unexpected list: ' .. tostring(path)); end
|
|
return entries;
|
|
end,
|
|
};
|
|
end
|
|
|
|
testlib.test('listTracks filters dfpwm, strips extension and sorts', function()
|
|
local music = createMusic({
|
|
dir = '/musics',
|
|
fs = fakeFs('/musics', { 'Zebra.dfpwm', 'notes.txt', 'Apple.dfpwm' }),
|
|
});
|
|
local tracks = music.listTracks();
|
|
testlib.assertEquals(#tracks, 2);
|
|
testlib.assertEquals(tracks[1].name, 'Apple');
|
|
testlib.assertEquals(tracks[1].path, '/musics/Apple.dfpwm');
|
|
testlib.assertEquals(tracks[2].name, 'Zebra');
|
|
testlib.assertEquals(tracks[2].path, '/musics/Zebra.dfpwm');
|
|
end);
|
|
|
|
testlib.test('listTracks returns empty when directory is missing', function()
|
|
local music = createMusic({
|
|
dir = '/musics',
|
|
fs = { isDir = function() return false; end },
|
|
});
|
|
testlib.assertEquals(#music.listTracks(), 0);
|
|
end);
|
|
|
|
testlib.run();
|