AssParserTests.cs 4.8 KB

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