| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |