LrcLyricParserTests.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.IO;
  2. using MediaBrowser.Model.Lyrics;
  3. using MediaBrowser.Providers.Lyric;
  4. using Xunit;
  5. namespace Jellyfin.Providers.Tests.Lyrics;
  6. public static class LrcLyricParserTests
  7. {
  8. [Fact]
  9. public static void ParseElrcCues()
  10. {
  11. var parser = new LrcLyricParser();
  12. var fileContents = File.ReadAllText(Path.Combine("Test Data", "Lyrics", "Fleetwood Mac - Rumors.elrc"));
  13. var parsed = parser.ParseLyrics(new LyricFile("Fleetwood Mac - Rumors.elrc", fileContents));
  14. Assert.NotNull(parsed);
  15. Assert.Equal(31, parsed.Lyrics.Count);
  16. var line1 = parsed.Lyrics[0];
  17. Assert.Equal("Every night that goes between", line1.Text);
  18. Assert.NotNull(line1.Cues);
  19. Assert.Equal(9, line1.Cues.Count);
  20. Assert.Equal(68400000, line1.Cues[0].Start);
  21. Assert.Equal(72000000, line1.Cues[0].End);
  22. var line5 = parsed.Lyrics[4];
  23. Assert.Equal("Every night you do not come", line5.Text);
  24. Assert.NotNull(line5.Cues);
  25. Assert.Equal(11, line5.Cues.Count);
  26. Assert.Equal(377300000, line5.Cues[5].Start);
  27. Assert.Equal(380000000, line5.Cues[5].End);
  28. var lastLine = parsed.Lyrics[^1];
  29. Assert.Equal("I have always been a storm", lastLine.Text);
  30. Assert.NotNull(lastLine.Cues);
  31. Assert.Equal(11, lastLine.Cues.Count);
  32. Assert.Equal(2358000000, lastLine.Cues[^1].Start);
  33. Assert.Null(lastLine.Cues[^1].End);
  34. }
  35. }