diff options
| author | Luke <luke.pulverenti@gmail.com> | 2014-05-11 00:39:24 -0400 |
|---|---|---|
| committer | Luke <luke.pulverenti@gmail.com> | 2014-05-11 00:39:24 -0400 |
| commit | 4e70530ba6c4497dc57e1769e3456b860b385bd5 (patch) | |
| tree | 2a0271b50cfe7175979e18df83d59508f942b99a /MediaBrowser.Tests/MediaEncoding | |
| parent | 4e710ec0a49c2869805801264a411076c576a3a5 (diff) | |
| parent | 5af374072d8f611fee5a5e1a10d0e2ba1fa7dd1c (diff) | |
Merge pull request #815 from lalmanzar/master
Implement parsers
Diffstat (limited to 'MediaBrowser.Tests/MediaEncoding')
4 files changed, 234 insertions, 0 deletions
diff --git a/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs b/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs new file mode 100644 index 000000000..0d86fbdcd --- /dev/null +++ b/MediaBrowser.Tests/MediaEncoding/Subtitles/SrtParserTests.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MediaBrowser.MediaEncoding.Subtitles; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace MediaBrowser.Tests.MediaEncoding.Subtitles { + + [TestClass] + public class SrtParserTests { + + [TestMethod] + public void TestParse() { + + var expectedSubs = + new SubtitleTrackInfo { + TrackEvents = new List<SubtitleTrackEvent> { + new SubtitleTrackEvent { + Id = "1", + StartPositionTicks = 24000000, + EndPositionTicks = 52000000, + Text = + "[Background Music Playing]" + }, + new SubtitleTrackEvent { + Id = "2", + StartPositionTicks = 157120000, + EndPositionTicks = 173990000, + Text = + "Oh my god, Watch out!<br />It's coming!!" + }, + new SubtitleTrackEvent { + Id = "3", + StartPositionTicks = 257120000, + EndPositionTicks = 303990000, + Text = "[Bird noises]" + }, + new SubtitleTrackEvent { + Id = "4", + StartPositionTicks = 310000000, + EndPositionTicks = 319990000, + Text = + "This text is <font color=\"red\">RED</font> and has not been positioned." + }, + new SubtitleTrackEvent { + Id = "5", + StartPositionTicks = 320000000, + EndPositionTicks = 329990000, + Text = + "This is a<br />new line, as is<br />this" + }, + new SubtitleTrackEvent { + Id = "6", + StartPositionTicks = 330000000, + EndPositionTicks = 339990000, + Text = + "This contains nested <b>bold, <i>italic, <u>underline</u> and <s>strike-through</s></u></i></b> HTML tags" + }, + new SubtitleTrackEvent { + Id = "7", + StartPositionTicks = 340000000, + EndPositionTicks = 349990000, + Text = + "Unclosed but <b>supported HTML tags are left in, SSA italics aren't" + }, + new SubtitleTrackEvent { + Id = "8", + StartPositionTicks = 350000000, + EndPositionTicks = 359990000, + Text = + "<ggg>Unsupported</ggg> HTML tags are escaped and left in, even if <hhh>not closed." + }, + new SubtitleTrackEvent { + Id = "9", + StartPositionTicks = 360000000, + EndPositionTicks = 369990000, + Text = + "Multiple SSA tags are stripped" + }, + new SubtitleTrackEvent { + Id = "10", + StartPositionTicks = 370000000, + EndPositionTicks = 379990000, + Text = + "Greater than (<) and less than (>) are shown" + } + } + }; + + var sut = new SrtParser(); + + var stream = File.OpenRead(@"MediaEncoding\Subtitles\TestSubtitles\unit.srt"); + + var result = sut.Parse(stream); + + Assert.IsNotNull(result); + Assert.AreEqual(expectedSubs.TrackEvents.Count,result.TrackEvents.Count); + for (int i = 0; i < expectedSubs.TrackEvents.Count; i++) + { + Assert.AreEqual(expectedSubs.TrackEvents[i].Id, result.TrackEvents[i].Id); + Assert.AreEqual(expectedSubs.TrackEvents[i].StartPositionTicks, result.TrackEvents[i].StartPositionTicks); + Assert.AreEqual(expectedSubs.TrackEvents[i].EndPositionTicks, result.TrackEvents[i].EndPositionTicks); + Assert.AreEqual(expectedSubs.TrackEvents[i].Text, result.TrackEvents[i].Text); + } + + } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Tests/MediaEncoding/Subtitles/SsaParserTests.cs b/MediaBrowser.Tests/MediaEncoding/Subtitles/SsaParserTests.cs new file mode 100644 index 000000000..51dc7f959 --- /dev/null +++ b/MediaBrowser.Tests/MediaEncoding/Subtitles/SsaParserTests.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.IO; +using MediaBrowser.MediaEncoding.Subtitles; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace MediaBrowser.Tests.MediaEncoding.Subtitles { + + [TestClass] + public class SsaParserTests { + + [TestMethod] + public void TestParse() { + + var expectedSubs = + new SubtitleTrackInfo { + TrackEvents = new List<SubtitleTrackEvent> { + new SubtitleTrackEvent { + Id = "1", + StartPositionTicks = 24000000, + EndPositionTicks = 72000000, + Text = + "Senator, we're <br />making our final <br />approach into Coruscant." + }, + new SubtitleTrackEvent { + Id = "2", + StartPositionTicks = 97100000, + EndPositionTicks = 133900000, + Text = + "Very good, Lieutenant." + }, + new SubtitleTrackEvent { + Id = "3", + StartPositionTicks = 150400000, + EndPositionTicks = 180400000, + Text = "It's <br />a <br />trap!" + } + } + }; + + var sut = new SsaParser(); + + var stream = File.OpenRead(@"MediaEncoding\Subtitles\TestSubtitles\data.ssa"); + + var result = sut.Parse(stream); + + Assert.IsNotNull(result); + Assert.AreEqual(expectedSubs.TrackEvents.Count,result.TrackEvents.Count); + for (int i = 0; i < expectedSubs.TrackEvents.Count; i++) + { + Assert.AreEqual(expectedSubs.TrackEvents[i].Id, result.TrackEvents[i].Id); + Assert.AreEqual(expectedSubs.TrackEvents[i].StartPositionTicks, result.TrackEvents[i].StartPositionTicks); + Assert.AreEqual(expectedSubs.TrackEvents[i].EndPositionTicks, result.TrackEvents[i].EndPositionTicks); + Assert.AreEqual(expectedSubs.TrackEvents[i].Text, result.TrackEvents[i].Text); + } + + } + } +}
\ No newline at end of file diff --git a/MediaBrowser.Tests/MediaEncoding/Subtitles/TestSubtitles/data.ssa b/MediaBrowser.Tests/MediaEncoding/Subtitles/TestSubtitles/data.ssa new file mode 100644 index 000000000..3114a844a --- /dev/null +++ b/MediaBrowser.Tests/MediaEncoding/Subtitles/TestSubtitles/data.ssa @@ -0,0 +1,23 @@ +[Script Info] +Title: Testing subtitles for the SSA Format + +[V4 Styles] +Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding +Style: Default,Arial,20,65535,65535,65535,-2147483640,-1,0,1,3,0,2,30,30,30,0,0 +Style: Titre_episode,Akbar,140,15724527,65535,65535,986895,-1,0,1,1,0,3,30,30,30,0,0 +Style: Wolf main,Wolf_Rain,56,15724527,15724527,15724527,4144959,0,0,1,1,2,2,5,5,30,0,0 + + + +[Events] +Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text +Dialogue: 0,0:00:02.40,0:00:07.20,Default,,0000,0000,0000,,Senator, {\kf89}we're \Nmaking our final \napproach into Coruscant. +Dialogue: 0,0:00:09.71,0:00:13.39,Default,,0000,0000,0000,,{\pos(400,570)}Very good, Lieutenant. +Dialogue: 0,0:00:15.04,0:00:18.04,Default,,0000,0000,0000,,It's \Na \ntrap! + + +[Pictures] +This section will be ignored + +[Fonts] +This section will be ignored
\ No newline at end of file diff --git a/MediaBrowser.Tests/MediaEncoding/Subtitles/TestSubtitles/unit.srt b/MediaBrowser.Tests/MediaEncoding/Subtitles/TestSubtitles/unit.srt new file mode 100644 index 000000000..5f6e5636e --- /dev/null +++ b/MediaBrowser.Tests/MediaEncoding/Subtitles/TestSubtitles/unit.srt @@ -0,0 +1,44 @@ + + +1 +00:00:02.400 --> 00:00:05.200 +[Background Music Playing] + +2 +00:00:15,712 --> 00:00:17,399 X1:000 X2:000 Y1:050 Y2:100 +Oh my god, Watch out! +It's coming!! + +3 +00:00:25,712 --> 00:00:30,399 +[Bird noises] + +4 +00:00:31,000 --> 00:00:31,999 +This text is <font color="red">RED</font> and has not been {\pos(142,120)}positioned. + +5 +00:00:32,000 --> 00:00:32,999 +This is a\nnew line, as is\Nthis + +6 +00:00:33,000 --> 00:00:33,999 +This contains nested <b>bold, <i>italic, <u>underline</u> and <s>strike-through</s></u></i></b> HTML tags + +7 +00:00:34,000 --> 00:00:34,999 +Unclosed but <b>supported HTML tags are left in, {\i1} SSA italics aren't + +8 +00:00:35,000 --> 00:00:35,999 +<ggg>Unsupported</ggg> HTML tags are escaped and left in, even if <hhh>not closed. + +9 +00:00:36,000 --> 00:00:36,999 +Multiple {\pos(142,120)\b1}SSA tags are stripped + +10 +00:00:37,000 --> 00:00:37,999 +Greater than (<) and less than (>) are shown + + |
