aboutsummaryrefslogtreecommitdiff
path: root/tests/Jellyfin.Providers.Tests/Lyrics/LrcLyricParserTests.cs
blob: 756a688abe80ba869c152c495fdf09a120711161 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System.IO;
using MediaBrowser.Model.Lyrics;
using MediaBrowser.Providers.Lyric;
using Xunit;

namespace Jellyfin.Providers.Tests.Lyrics;

public static class LrcLyricParserTests
{
    [Fact]
    public static void ParseElrcCues()
    {
        var parser = new LrcLyricParser();
        var fileContents = File.ReadAllText(Path.Combine("Test Data", "Lyrics", "Fleetwood Mac - Rumors.elrc"));
        var parsed = parser.ParseLyrics(new LyricFile("Fleetwood Mac - Rumors.elrc", fileContents));

        Assert.NotNull(parsed);
        Assert.Equal(31, parsed.Lyrics.Count);

        var line1 = parsed.Lyrics[0];
        Assert.Equal("Every night that goes between", line1.Text);
        Assert.NotNull(line1.Cues);
        Assert.Equal(9, line1.Cues.Count);
        Assert.Equal(68400000, line1.Cues[0].Start);
        Assert.Equal(72000000, line1.Cues[0].End);

        var line5 = parsed.Lyrics[4];
        Assert.Equal("Every night you do not come", line5.Text);
        Assert.NotNull(line5.Cues);
        Assert.Equal(11, line5.Cues.Count);
        Assert.Equal(377300000, line5.Cues[5].Start);
        Assert.Equal(380000000, line5.Cues[5].End);

        var lastLine = parsed.Lyrics[^1];
        Assert.Equal("I have always been a storm", lastLine.Text);
        Assert.NotNull(lastLine.Cues);
        Assert.Equal(11, lastLine.Cues.Count);
        Assert.Equal(2358000000, lastLine.Cues[^1].Start);
        Assert.Null(lastLine.Cues[^1].End);
    }
}