2
0

SubtitleEncoderTests.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. public 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()
  28. {
  29. Path = "/media/sub.ass",
  30. Protocol = MediaProtocol.File,
  31. Format = "ass",
  32. IsExternal = true
  33. });
  34. data.Add(
  35. new MediaSourceInfo()
  36. {
  37. Protocol = MediaProtocol.File
  38. },
  39. new MediaStream()
  40. {
  41. Path = "/media/sub.ssa",
  42. IsExternal = true
  43. },
  44. new SubtitleEncoder.SubtitleInfo()
  45. {
  46. Path = "/media/sub.ssa",
  47. Protocol = MediaProtocol.File,
  48. Format = "ssa",
  49. IsExternal = true
  50. });
  51. data.Add(
  52. new MediaSourceInfo()
  53. {
  54. Protocol = MediaProtocol.File
  55. },
  56. new MediaStream()
  57. {
  58. Path = "/media/sub.srt",
  59. IsExternal = true
  60. },
  61. new SubtitleEncoder.SubtitleInfo()
  62. {
  63. Path = "/media/sub.srt",
  64. Protocol = MediaProtocol.File,
  65. Format = "srt",
  66. IsExternal = true
  67. });
  68. data.Add(
  69. new MediaSourceInfo()
  70. {
  71. Protocol = MediaProtocol.Http
  72. },
  73. new MediaStream()
  74. {
  75. Path = "/media/sub.ass",
  76. IsExternal = true
  77. },
  78. new SubtitleEncoder.SubtitleInfo()
  79. {
  80. Path = "/media/sub.ass",
  81. Protocol = MediaProtocol.File,
  82. Format = "ass",
  83. IsExternal = true
  84. });
  85. return data;
  86. }
  87. [Theory]
  88. [MemberData(nameof(GetReadableFile_Valid_TestData))]
  89. public async Task GetReadableFile_Valid_Success(MediaSourceInfo mediaSource, MediaStream subtitleStream, SubtitleEncoder.SubtitleInfo subtitleInfo)
  90. {
  91. var fixture = new Fixture().Customize(new AutoMoqCustomization { ConfigureMembers = true });
  92. var subtitleEncoder = fixture.Create<SubtitleEncoder>();
  93. var result = await subtitleEncoder.GetReadableFile(mediaSource, subtitleStream, CancellationToken.None);
  94. Assert.Equal(subtitleInfo.Path, result.Path);
  95. Assert.Equal(subtitleInfo.Protocol, result.Protocol);
  96. Assert.Equal(subtitleInfo.Format, result.Format);
  97. Assert.Equal(subtitleInfo.IsExternal, result.IsExternal);
  98. }
  99. }
  100. }