2
0

AssParserTests.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using System.Globalization;
  3. using System.IO;
  4. using System.Threading;
  5. using MediaBrowser.MediaEncoding.Subtitles;
  6. using Xunit;
  7. namespace Jellyfin.MediaEncoding.Subtitles.Tests
  8. {
  9. public class AssParserTests
  10. {
  11. [Fact]
  12. public void Parse_Valid_Success()
  13. {
  14. using (var stream = File.OpenRead("Test Data/example.ass"))
  15. {
  16. var parsed = new AssParser().Parse(stream, CancellationToken.None);
  17. Assert.Single(parsed.TrackEvents);
  18. var trackEvent = parsed.TrackEvents[0];
  19. Assert.Equal("1", trackEvent.Id);
  20. Assert.Equal(TimeSpan.Parse("00:00:01.18", CultureInfo.InvariantCulture).Ticks, trackEvent.StartPositionTicks);
  21. Assert.Equal(TimeSpan.Parse("00:00:06.85", CultureInfo.InvariantCulture).Ticks, trackEvent.EndPositionTicks);
  22. Assert.Equal("Like an Angel with pity on nobody\r\nThe second line in subtitle", trackEvent.Text);
  23. }
  24. }
  25. [Fact]
  26. public void ParseFieldHeaders_Valid_Success()
  27. {
  28. const string Line = "Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text";
  29. var headers = AssParser.ParseFieldHeaders(Line);
  30. Assert.Equal(1, headers["Start"]);
  31. Assert.Equal(2, headers["End"]);
  32. Assert.Equal(9, headers["Text"]);
  33. }
  34. }
  35. }