2
0

VideoResolverTests.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Emby.Naming.Common;
  4. using Emby.Naming.Video;
  5. using MediaBrowser.Model.Entities;
  6. using Xunit;
  7. namespace Jellyfin.Naming.Tests.Video
  8. {
  9. public class VideoResolverTests
  10. {
  11. private static NamingOptions _namingOptions = new NamingOptions();
  12. public static IEnumerable<object[]> ResolveFile_ValidFileNameTestData()
  13. {
  14. yield return new object[]
  15. {
  16. new VideoFileInfo(
  17. path: @"/server/Movies/7 Psychos.mkv/7 Psychos.mkv",
  18. container: "mkv",
  19. name: "7 Psychos")
  20. };
  21. yield return new object[]
  22. {
  23. new VideoFileInfo(
  24. path: @"/server/Movies/3 days to kill (2005)/3 days to kill (2005).mkv",
  25. container: "mkv",
  26. name: "3 days to kill",
  27. year: 2005)
  28. };
  29. yield return new object[]
  30. {
  31. new VideoFileInfo(
  32. path: @"/server/Movies/American Psycho/American.Psycho.mkv",
  33. container: "mkv",
  34. name: "American.Psycho")
  35. };
  36. yield return new object[]
  37. {
  38. new VideoFileInfo(
  39. path: @"/server/Movies/brave (2007)/brave (2006).3d.sbs.mkv",
  40. container: "mkv",
  41. name: "brave",
  42. year: 2006,
  43. is3D: true,
  44. format3D: "sbs")
  45. };
  46. yield return new object[]
  47. {
  48. new VideoFileInfo(
  49. path: @"/server/Movies/300 (2007)/300 (2006).3d1.sbas.mkv",
  50. container: "mkv",
  51. name: "300",
  52. year: 2006)
  53. };
  54. yield return new object[]
  55. {
  56. new VideoFileInfo(
  57. path: @"/server/Movies/300 (2007)/300 (2006).3d.sbs.mkv",
  58. container: "mkv",
  59. name: "300",
  60. year: 2006,
  61. is3D: true,
  62. format3D: "sbs")
  63. };
  64. yield return new object[]
  65. {
  66. new VideoFileInfo(
  67. path: @"/server/Movies/brave (2007)/brave (2006)-trailer.bluray.disc",
  68. container: "disc",
  69. name: "brave",
  70. year: 2006,
  71. isStub: true,
  72. stubType: "bluray")
  73. };
  74. yield return new object[]
  75. {
  76. new VideoFileInfo(
  77. path: @"/server/Movies/300 (2007)/300 (2006)-trailer.bluray.disc",
  78. container: "disc",
  79. name: "300",
  80. year: 2006,
  81. isStub: true,
  82. stubType: "bluray")
  83. };
  84. yield return new object[]
  85. {
  86. new VideoFileInfo(
  87. path: @"/server/Movies/Brave (2007)/Brave (2006).bluray.disc",
  88. container: "disc",
  89. name: "Brave",
  90. year: 2006,
  91. isStub: true,
  92. stubType: "bluray")
  93. };
  94. yield return new object[]
  95. {
  96. new VideoFileInfo(
  97. path: @"/server/Movies/300 (2007)/300 (2006).bluray.disc",
  98. container: "disc",
  99. name: "300",
  100. year: 2006,
  101. isStub: true,
  102. stubType: "bluray")
  103. };
  104. yield return new object[]
  105. {
  106. new VideoFileInfo(
  107. path: @"/server/Movies/300 (2007)/300 (2006)-trailer.mkv",
  108. container: "mkv",
  109. name: "300",
  110. year: 2006,
  111. extraType: ExtraType.Trailer)
  112. };
  113. yield return new object[]
  114. {
  115. new VideoFileInfo(
  116. path: @"/server/Movies/Brave (2007)/Brave (2006)-trailer.mkv",
  117. container: "mkv",
  118. name: "Brave",
  119. year: 2006,
  120. extraType: ExtraType.Trailer)
  121. };
  122. yield return new object[]
  123. {
  124. new VideoFileInfo(
  125. path: @"/server/Movies/300 (2007)/300 (2006).mkv",
  126. container: "mkv",
  127. name: "300",
  128. year: 2006)
  129. };
  130. yield return new object[]
  131. {
  132. new VideoFileInfo(
  133. path: @"/server/Movies/Bad Boys (1995)/Bad Boys (1995).mkv",
  134. container: "mkv",
  135. name: "Bad Boys",
  136. year: 1995)
  137. };
  138. yield return new object[]
  139. {
  140. new VideoFileInfo(
  141. path: @"/server/Movies/Brave (2007)/Brave (2006).mkv",
  142. container: "mkv",
  143. name: "Brave",
  144. year: 2006)
  145. };
  146. yield return new object[]
  147. {
  148. new VideoFileInfo(
  149. path: @"/server/Movies/Rain Man 1988 REMASTERED 1080p BluRay x264 AAC - JEFF/Rain Man 1988 REMASTERED 1080p BluRay x264 AAC - JEFF.mp4",
  150. container: "mp4",
  151. name: "Rain Man",
  152. year: 1988)
  153. };
  154. }
  155. [Theory]
  156. [MemberData(nameof(ResolveFile_ValidFileNameTestData))]
  157. public void ResolveFile_ValidFileName_Success(VideoFileInfo expectedResult)
  158. {
  159. var result = VideoResolver.ResolveFile(expectedResult.Path, _namingOptions);
  160. Assert.NotNull(result);
  161. Assert.Equal(result!.Path, expectedResult.Path);
  162. Assert.Equal(result.Container, expectedResult.Container);
  163. Assert.Equal(result.Name, expectedResult.Name);
  164. Assert.Equal(result.Year, expectedResult.Year);
  165. Assert.Equal(result.ExtraType, expectedResult.ExtraType);
  166. Assert.Equal(result.Format3D, expectedResult.Format3D);
  167. Assert.Equal(result.Is3D, expectedResult.Is3D);
  168. Assert.Equal(result.IsStub, expectedResult.IsStub);
  169. Assert.Equal(result.StubType, expectedResult.StubType);
  170. Assert.Equal(result.IsDirectory, expectedResult.IsDirectory);
  171. Assert.Equal(result.FileNameWithoutExtension.ToString(), expectedResult.FileNameWithoutExtension.ToString());
  172. Assert.Equal(result.ToString(), expectedResult.ToString());
  173. }
  174. [Fact]
  175. public void ResolveFile_EmptyPath()
  176. {
  177. var result = VideoResolver.ResolveFile(string.Empty, _namingOptions);
  178. Assert.Null(result);
  179. }
  180. [Fact]
  181. public void ResolveDirectoryTest()
  182. {
  183. var paths = new[]
  184. {
  185. @"/Server/Iron Man",
  186. @"Batman",
  187. string.Empty
  188. };
  189. var results = paths.Select(path => VideoResolver.ResolveDirectory(path, _namingOptions)).ToList();
  190. Assert.Equal(3, results.Count);
  191. Assert.NotNull(results[0]);
  192. Assert.NotNull(results[1]);
  193. Assert.Null(results[2]);
  194. foreach (var result in results)
  195. {
  196. Assert.Null(result?.Container);
  197. }
  198. }
  199. }
  200. }