VideoResolverTests.cs 6.7 KB

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