aboutsummaryrefslogtreecommitdiff
path: root/tests/Jellyfin.MediaEncoding.Keyframes.Tests/FfProbe/FfProbeKeyframeExtractorTests.cs
blob: e410fa29fb78946d560a99553551f5af3f495a3f (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
using System.IO;
using System.Text.Json;
using Xunit;

namespace Jellyfin.MediaEncoding.Keyframes.FfProbe
{
    public class FfProbeKeyframeExtractorTests
    {
        [Theory]
        [InlineData("keyframes.txt", "keyframes_result.json")]
        [InlineData("keyframes_streamduration.txt", "keyframes_streamduration_result.json")]
        public void ParseStream_Valid_Success(string testDataFileName, string resultFileName)
        {
            var testDataPath = Path.Combine("FfProbe/Test Data", testDataFileName);
            var resultPath = Path.Combine("FfProbe/Test Data", resultFileName);
            var resultFileStream = File.OpenRead(resultPath);
            var expectedResult = JsonSerializer.Deserialize<KeyframeData>(resultFileStream)!;

            using var fileStream = File.OpenRead(testDataPath);
            using var streamReader = new StreamReader(fileStream);

            var result = FfProbeKeyframeExtractor.ParseStream(streamReader);

            Assert.Equal(expectedResult.TotalDuration, result.TotalDuration);
            Assert.Equal(expectedResult.KeyframeTicks, result.KeyframeTicks);
        }
    }
}