Spaces:
Sleeping
Sleeping
package.path = '../common/libs/?.lua;../common/vendor/?.lua;' .. package.path | |
app = {} | |
local lu = require('luaunit') | |
require('mock_reaper') | |
require('Polo') | |
require('source/SRTWriter') | |
require('source/Transcript') | |
-- | |
reaper.GetMediaItemTake_Source = function () return {fileName = "test_audio.wav"} end | |
reaper.GetMediaSourceFileName = function (source) return source.fileName end | |
TestSRTWriter = {} | |
function TestSRTWriter:setUp() | |
function app:trap(f) return xpcall(f, function(e) print(tostring(e)) end) end | |
reaper.__test_setUp() | |
end | |
function TestSRTWriter.make_transcript() | |
local t = Transcript.new() | |
t:add_segment(TranscriptSegment.new { | |
data = {start = 0, ['end'] = 1, text = 'hello'}, | |
item = {}, | |
take = {} | |
}) | |
t:add_segment(TranscriptSegment.new { | |
data = {start = 1, ['end'] = 2, text = 'world'}, | |
item = {}, | |
take = {} | |
}) | |
t:update() | |
return t | |
end | |
function TestSRTWriter:testFormatTime() | |
lu.assertEquals(SRTWriter.format_time(0), '00:00:00,000') | |
lu.assertEquals(SRTWriter.format_time(1), '00:00:01,000') | |
lu.assertEquals(SRTWriter.format_time(1.5), '00:00:01,500') | |
lu.assertEquals(SRTWriter.format_time(60), '00:01:00,000') | |
lu.assertEquals(SRTWriter.format_time(60.5), '00:01:00,500') | |
lu.assertEquals(SRTWriter.format_time(3600), '01:00:00,000') | |
lu.assertEquals(SRTWriter.format_time(3600.5), '01:00:00,500') | |
end | |
function TestSRTWriter:testInit() | |
local f = {} | |
local writer = SRTWriter.new { file = f } | |
end | |
function TestSRTWriter:testInitNoFile() | |
lu.assertErrorMsgContains('missing file', SRTWriter.new) | |
end | |
function TestSRTWriter:testWrite() | |
local t = TestSRTWriter.make_transcript() | |
local output = {} | |
local f = { | |
write = function (self, s) | |
table.insert(output, s) | |
end | |
} | |
local writer = SRTWriter.new { file = f } | |
writer:write(t) | |
local output_str = table.concat(output) | |
lu.assertEquals(output_str, '1\n00:00:00,000 --> 00:00:01,000\nhello\n\n2\n00:00:01,000 --> 00:00:02,000\nworld\n\n') | |
end | |
function TestSRTWriter:testXYCoordinates() | |
local t = TestSRTWriter.make_transcript() | |
local output = {} | |
local f = { | |
write = function (self, s) | |
table.insert(output, s) | |
end | |
} | |
local writer = SRTWriter.new { | |
file = f, | |
options = { | |
coords_x1 = '1', | |
coords_y1 = '2', | |
coords_x2 = '3', | |
coords_y2 = '4' | |
} | |
} | |
writer:write(t) | |
local output_str = table.concat(output) | |
lu.assertEquals(output_str, '1\n00:00:00,000 --> 00:00:01,000 X1:1 X2:3 Y1:2 Y2:4\nhello\n\n2\n00:00:01,000 --> 00:00:02,000 X1:1 X2:3 Y1:2 Y2:4\nworld\n\n') | |
end | |
function TestSRTWriter:testWriteSegment() | |
local output = {} | |
local f = { | |
write = function (self, s) | |
table.insert(output, s) | |
end | |
} | |
local writer = SRTWriter.new { file = f } | |
local segment = { | |
get = function (self, key) | |
if key == 'start' then | |
return 0 | |
elseif key == 'end' then | |
return 1 | |
elseif key == 'text' then | |
return 'hello' | |
end | |
end | |
} | |
writer:write_segment(segment, 1) | |
local output_str = table.concat(output) | |
lu.assertEquals(output_str, '1\n00:00:00,000 --> 00:00:01,000\nhello\n\n') | |
end | |
function TestSRTWriter:testWriteLine() | |
local output = {} | |
local f = { | |
write = function (self, s) | |
table.insert(output, s) | |
end | |
} | |
local writer = SRTWriter.new { file = f } | |
writer:write_line('hello', 1, 0, 1) | |
local output_str = table.concat(output) | |
lu.assertEquals(output_str, '1\n00:00:00,000 --> 00:00:01,000\nhello\n\n') | |
end | |
-- | |
os.exit(lu.LuaUnit.run()) | |