SubtitleEncoderTests.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System.Threading;
  2. using System.Threading.Tasks;
  3. using AutoFixture;
  4. using AutoFixture.AutoMoq;
  5. using MediaBrowser.MediaEncoding.Subtitles;
  6. using MediaBrowser.Model.Dto;
  7. using MediaBrowser.Model.Entities;
  8. using MediaBrowser.Model.MediaInfo;
  9. using Xunit;
  10. namespace Jellyfin.MediaEncoding.Subtitles.Tests
  11. {
  12. public class SubtitleEncoderTests
  13. {
  14. internal static TheoryData<MediaSourceInfo, MediaStream, SubtitleEncoder.SubtitleInfo> GetReadableFile_Valid_TestData()
  15. {
  16. var data = new TheoryData<MediaSourceInfo, MediaStream, SubtitleEncoder.SubtitleInfo>();
  17. data.Add(
  18. new MediaSourceInfo()
  19. {
  20. Protocol = MediaProtocol.File
  21. },
  22. new MediaStream()
  23. {
  24. Path = "/media/sub.ass",
  25. IsExternal = true
  26. },
  27. new SubtitleEncoder.SubtitleInfo("/media/sub.ass", MediaProtocol.File, "ass", true));
  28. data.Add(
  29. new MediaSourceInfo()
  30. {
  31. Protocol = MediaProtocol.File
  32. },
  33. new MediaStream()
  34. {
  35. Path = "/media/sub.ssa",
  36. IsExternal = true
  37. },
  38. new SubtitleEncoder.SubtitleInfo("/media/sub.ssa", MediaProtocol.File, "ssa", true));
  39. data.Add(
  40. new MediaSourceInfo()
  41. {
  42. Protocol = MediaProtocol.File
  43. },
  44. new MediaStream()
  45. {
  46. Path = "/media/sub.srt",
  47. IsExternal = true
  48. },
  49. new SubtitleEncoder.SubtitleInfo("/media/sub.srt", MediaProtocol.File, "srt", true));
  50. data.Add(
  51. new MediaSourceInfo()
  52. {
  53. Protocol = MediaProtocol.Http
  54. },
  55. new MediaStream()
  56. {
  57. Path = "/media/sub.ass",
  58. IsExternal = true
  59. },
  60. new SubtitleEncoder.SubtitleInfo("/media/sub.ass", MediaProtocol.File, "ass", true));
  61. return data;
  62. }
  63. [Theory]
  64. [MemberData(nameof(GetReadableFile_Valid_TestData))]
  65. internal async Task GetReadableFile_Valid_Success(MediaSourceInfo mediaSource, MediaStream subtitleStream, SubtitleEncoder.SubtitleInfo subtitleInfo)
  66. {
  67. var fixture = new Fixture().Customize(new AutoMoqCustomization { ConfigureMembers = true });
  68. var subtitleEncoder = fixture.Create<SubtitleEncoder>();
  69. var result = await subtitleEncoder.GetReadableFile(mediaSource, subtitleStream, CancellationToken.None).ConfigureAwait(false);
  70. Assert.Equal(subtitleInfo.Path, result.Path);
  71. Assert.Equal(subtitleInfo.Protocol, result.Protocol);
  72. Assert.Equal(subtitleInfo.Format, result.Format);
  73. Assert.Equal(subtitleInfo.IsExternal, result.IsExternal);
  74. }
  75. }
  76. }