AssParserTests.cs 4.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System.Text;
  2. using MediaBrowser.MediaEncoding.Subtitles;
  3. using MediaBrowser.Model.MediaInfo;
  4. using Microsoft.VisualStudio.TestTools.UnitTesting;
  5. using System.Collections.Generic;
  6. using System.IO;
  7. using System.Threading;
  8. namespace MediaBrowser.Tests.MediaEncoding.Subtitles {
  9. [TestClass]
  10. public class AssParserTests {
  11. [TestMethod]
  12. public void TestParse() {
  13. var expectedSubs =
  14. new SubtitleTrackInfo {
  15. TrackEvents = new List<SubtitleTrackEvent> {
  16. new SubtitleTrackEvent {
  17. Id = "1",
  18. StartPositionTicks = 24000000,
  19. EndPositionTicks = 72000000,
  20. Text =
  21. "Senator, we're "+ParserValues.NewLine+"making our final "+ParserValues.NewLine+"approach into Coruscant."
  22. },
  23. new SubtitleTrackEvent {
  24. Id = "2",
  25. StartPositionTicks = 97100000,
  26. EndPositionTicks = 133900000,
  27. Text =
  28. "Very good, Lieutenant."
  29. },
  30. new SubtitleTrackEvent {
  31. Id = "3",
  32. StartPositionTicks = 150400000,
  33. EndPositionTicks = 180400000,
  34. Text = "It's "+ParserValues.NewLine+"a "+ParserValues.NewLine+"trap!"
  35. }
  36. }
  37. };
  38. var sut = new AssParser();
  39. var stream = File.OpenRead(@"MediaEncoding\Subtitles\TestSubtitles\data.ass");
  40. var result = sut.Parse(stream, CancellationToken.None);
  41. Assert.IsNotNull(result);
  42. Assert.AreEqual(expectedSubs.TrackEvents.Count,result.TrackEvents.Count);
  43. for (int i = 0; i < expectedSubs.TrackEvents.Count; i++)
  44. {
  45. Assert.AreEqual(expectedSubs.TrackEvents[i].Id, result.TrackEvents[i].Id);
  46. Assert.AreEqual(expectedSubs.TrackEvents[i].StartPositionTicks, result.TrackEvents[i].StartPositionTicks);
  47. Assert.AreEqual(expectedSubs.TrackEvents[i].EndPositionTicks, result.TrackEvents[i].EndPositionTicks);
  48. Assert.AreEqual(expectedSubs.TrackEvents[i].Text, result.TrackEvents[i].Text);
  49. }
  50. }
  51. [TestMethod]
  52. public void TestParse2()
  53. {
  54. var sut = new AssParser();
  55. var stream = File.OpenRead(@"MediaEncoding\Subtitles\TestSubtitles\data2.ass");
  56. var result = sut.Parse(stream, CancellationToken.None);
  57. Assert.IsNotNull(result);
  58. using (var ms = new MemoryStream())
  59. {
  60. var writer = new SrtWriter();
  61. writer.Write(result, ms, CancellationToken.None);
  62. ms.Position = 0;
  63. var text = Encoding.UTF8.GetString(ms.ToArray());
  64. var b = text;
  65. }
  66. }
  67. }
  68. }