AssParserTests.cs 4.9 KB

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