| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | using System.Threading;using System.Threading.Tasks;using AutoFixture;using AutoFixture.AutoMoq;using MediaBrowser.MediaEncoding.Subtitles;using MediaBrowser.Model.Dto;using MediaBrowser.Model.Entities;using MediaBrowser.Model.MediaInfo;using Xunit;namespace Jellyfin.MediaEncoding.Subtitles.Tests{    public class SubtitleEncoderTests    {        public static TheoryData<MediaSourceInfo, MediaStream, SubtitleEncoder.SubtitleInfo> GetReadableFile_Valid_TestData()        {            var data = new TheoryData<MediaSourceInfo, MediaStream, SubtitleEncoder.SubtitleInfo>();            data.Add(                new MediaSourceInfo()                {                    Protocol = MediaProtocol.File                },                new MediaStream()                {                    Path = "/media/sub.ass",                    IsExternal = true                },                new SubtitleEncoder.SubtitleInfo()                {                    Path = "/media/sub.ass",                    Protocol = MediaProtocol.File,                    Format = "ass",                    IsExternal = true                });            data.Add(                new MediaSourceInfo()                {                    Protocol = MediaProtocol.File                },                new MediaStream()                {                    Path = "/media/sub.ssa",                    IsExternal = true                },                new SubtitleEncoder.SubtitleInfo()                {                    Path = "/media/sub.ssa",                    Protocol = MediaProtocol.File,                    Format = "ssa",                    IsExternal = true                });            data.Add(                new MediaSourceInfo()                {                    Protocol = MediaProtocol.File                },                new MediaStream()                {                    Path = "/media/sub.srt",                    IsExternal = true                },                new SubtitleEncoder.SubtitleInfo()                {                    Path = "/media/sub.srt",                    Protocol = MediaProtocol.File,                    Format = "srt",                    IsExternal = true                });            data.Add(                new MediaSourceInfo()                {                    Protocol = MediaProtocol.Http                },                new MediaStream()                {                    Path = "/media/sub.ass",                    IsExternal = true                },                new SubtitleEncoder.SubtitleInfo()                {                    Path = "/media/sub.ass",                    Protocol = MediaProtocol.File,                    Format = "ass",                    IsExternal = true                });            return data;        }        [Theory]        [MemberData(nameof(GetReadableFile_Valid_TestData))]        public async Task GetReadableFile_Valid_Success(MediaSourceInfo mediaSource, MediaStream subtitleStream, SubtitleEncoder.SubtitleInfo subtitleInfo)        {            var fixture = new Fixture().Customize(new AutoMoqCustomization { ConfigureMembers = true });            var subtitleEncoder = fixture.Create<SubtitleEncoder>();            var result = await subtitleEncoder.GetReadableFile(mediaSource, subtitleStream, CancellationToken.None);            Assert.Equal(subtitleInfo.Path, result.Path);            Assert.Equal(subtitleInfo.Protocol, result.Protocol);            Assert.Equal(subtitleInfo.Format, result.Format);            Assert.Equal(subtitleInfo.IsExternal, result.IsExternal);        }    }}
 |