From 2899b77cd58456470b8dd4d01d3a8c525a9b5911 Mon Sep 17 00:00:00 2001 From: cvium Date: Sun, 26 Sep 2021 21:07:30 +0200 Subject: Implement FfProbeKeyframeExtractor and add tests for it --- .../FfProbe/FfProbeKeyframeExtractorTests.cs | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 tests/Jellyfin.MediaEncoding.Keyframes.Tests/FfProbe/FfProbeKeyframeExtractorTests.cs (limited to 'tests/Jellyfin.MediaEncoding.Keyframes.Tests/FfProbe/FfProbeKeyframeExtractorTests.cs') diff --git a/tests/Jellyfin.MediaEncoding.Keyframes.Tests/FfProbe/FfProbeKeyframeExtractorTests.cs b/tests/Jellyfin.MediaEncoding.Keyframes.Tests/FfProbe/FfProbeKeyframeExtractorTests.cs new file mode 100644 index 000000000..e410fa29f --- /dev/null +++ b/tests/Jellyfin.MediaEncoding.Keyframes.Tests/FfProbe/FfProbeKeyframeExtractorTests.cs @@ -0,0 +1,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(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); + } + } +} -- cgit v1.2.3