12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- require "../../spec_helper.cr"
- MockLines = ["Line 1", "Line 2"]
- MockLinesWithEscapableCharacter = ["<Line 1>", "&Line 2>", '\u200E' + "Line\u200F 3", "\u00A0Line 4"]
- Spectator.describe "WebVTT::Builder" do
- it "correctly builds a vtt file" do
- result = WebVTT.build do |vtt|
- 2.times do |i|
- vtt.cue(
- Time::Span.new(seconds: i),
- Time::Span.new(seconds: i + 1),
- MockLines[i]
- )
- end
- end
- expect(result).to eq([
- "WEBVTT",
- "",
- "00:00:00.000 --> 00:00:01.000",
- "Line 1",
- "",
- "00:00:01.000 --> 00:00:02.000",
- "Line 2",
- "",
- "",
- ].join('\n'))
- end
- it "correctly builds a vtt file with setting fields" do
- setting_fields = {
- "Kind" => "captions",
- "Language" => "en",
- }
- result = WebVTT.build(setting_fields) do |vtt|
- 2.times do |i|
- vtt.cue(
- Time::Span.new(seconds: i),
- Time::Span.new(seconds: i + 1),
- MockLines[i]
- )
- end
- end
- expect(result).to eq([
- "WEBVTT",
- "Kind: captions",
- "Language: en",
- "",
- "00:00:00.000 --> 00:00:01.000",
- "Line 1",
- "",
- "00:00:01.000 --> 00:00:02.000",
- "Line 2",
- "",
- "",
- ].join('\n'))
- end
- it "properly escapes characters" do
- result = WebVTT.build do |vtt|
- 4.times do |i|
- vtt.cue(Time::Span.new(seconds: i), Time::Span.new(seconds: i + 1), MockLinesWithEscapableCharacter[i])
- end
- end
- expect(result).to eq([
- "WEBVTT",
- "",
- "00:00:00.000 --> 00:00:01.000",
- "<Line 1>",
- "",
- "00:00:01.000 --> 00:00:02.000",
- "&Line 2>",
- "",
- "00:00:02.000 --> 00:00:03.000",
- "‎Line‏ 3",
- "",
- "00:00:03.000 --> 00:00:04.000",
- " Line 4",
- "",
- "",
- ].join('\n'))
- end
- end
|