MultiEpisodeTests.cs 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using Emby.Naming.Common;
  2. using Emby.Naming.TV;
  3. using Xunit;
  4. namespace Jellyfin.Naming.Tests.TV
  5. {
  6. public class MultiEpisodeTests
  7. {
  8. private readonly EpisodePathParser _episodePathParser = new EpisodePathParser(new NamingOptions());
  9. [Theory]
  10. [InlineData(@"Season 1/4x01 – 20 Hours in America (1).mkv", null)]
  11. [InlineData(@"Season 1/01x02 blah.avi", null)]
  12. [InlineData(@"Season 1/S01x02 blah.avi", null)]
  13. [InlineData(@"Season 1/S01E02 blah.avi", null)]
  14. [InlineData(@"Season 1/S01xE02 blah.avi", null)]
  15. [InlineData(@"Season 1/seriesname 01x02 blah.avi", null)]
  16. [InlineData(@"Season 1/seriesname S01x02 blah.avi", null)]
  17. [InlineData(@"Season 1/seriesname S01E02 blah.avi", null)]
  18. [InlineData(@"Season 1/seriesname S01xE02 blah.avi", null)]
  19. [InlineData(@"Season 2/02x03 - 04 Ep Name.mp4", null)]
  20. [InlineData(@"Season 2/My show name 02x03 - 04 Ep Name.mp4", null)]
  21. [InlineData(@"Season 2/Elementary - 02x03 - 02x04 - 02x15 - Ep Name.mp4", 15)]
  22. [InlineData(@"Season 2/02x03 - 02x04 - 02x15 - Ep Name.mp4", 15)]
  23. [InlineData(@"Season 2/02x03-04-15 - Ep Name.mp4", 15)]
  24. [InlineData(@"Season 2/Elementary - 02x03-04-15 - Ep Name.mp4", 15)]
  25. [InlineData(@"Season 02/02x03-E15 - Ep Name.mp4", 15)]
  26. [InlineData(@"Season 02/Elementary - 02x03-E15 - Ep Name.mp4", 15)]
  27. [InlineData(@"Season 02/02x03 - x04 - x15 - Ep Name.mp4", 15)]
  28. [InlineData(@"Season 02/Elementary - 02x03 - x04 - x15 - Ep Name.mp4", 15)]
  29. [InlineData(@"Season 02/02x03x04x15 - Ep Name.mp4", 15)]
  30. [InlineData(@"Season 02/Elementary - 02x03x04x15 - Ep Name.mp4", 15)]
  31. [InlineData(@"Season 1/Elementary - S01E23-E24-E26 - The Woman.mp4", 26)]
  32. [InlineData(@"Season 1/S01E23-E24-E26 - The Woman.mp4", 26)]
  33. // Four Digits seasons
  34. [InlineData(@"Season 2009/2009x02 blah.avi", null)]
  35. [InlineData(@"Season 2009/S2009x02 blah.avi", null)]
  36. [InlineData(@"Season 2009/S2009E02 blah.avi", null)]
  37. [InlineData(@"Season 2009/S2009xE02 blah.avi", null)]
  38. [InlineData(@"Season 2009/seriesname 2009x02 blah.avi", null)]
  39. [InlineData(@"Season 2009/seriesname S2009x02 blah.avi", null)]
  40. [InlineData(@"Season 2009/seriesname S2009E02 blah.avi", null)]
  41. [InlineData(@"Season 2009/seriesname S2009xE02 blah.avi", null)]
  42. [InlineData(@"Season 2009/Elementary - 2009x03 - 2009x04 - 2009x15 - Ep Name.mp4", 15)]
  43. [InlineData(@"Season 2009/2009x03 - 2009x04 - 2009x15 - Ep Name.mp4", 15)]
  44. [InlineData(@"Season 2009/2009x03-04-15 - Ep Name.mp4", 15)]
  45. [InlineData(@"Season 2009/Elementary - 2009x03-04-15 - Ep Name.mp4", 15)]
  46. [InlineData(@"Season 2009/2009x03-E15 - Ep Name.mp4", 15)]
  47. [InlineData(@"Season 2009/Elementary - 2009x03-E15 - Ep Name.mp4", 15)]
  48. [InlineData(@"Season 2009/2009x03 - x04 - x15 - Ep Name.mp4", 15)]
  49. [InlineData(@"Season 2009/Elementary - 2009x03 - x04 - x15 - Ep Name.mp4", 15)]
  50. [InlineData(@"Season 2009/2009x03x04x15 - Ep Name.mp4", 15)]
  51. [InlineData(@"Season 2009/Elementary - 2009x03x04x15 - Ep Name.mp4", 15)]
  52. [InlineData(@"Season 2009/Elementary - S2009E23-E24-E26 - The Woman.mp4", 26)]
  53. [InlineData(@"Season 2009/S2009E23-E24-E26 - The Woman.mp4", 26)]
  54. // Without season number
  55. [InlineData(@"Season 1/02 - blah.avi", null)]
  56. [InlineData(@"Season 2/02 - blah 14 blah.avi", null)]
  57. [InlineData(@"Season 1/02 - blah-02 a.avi", null)]
  58. [InlineData(@"Season 2/02.avi", null)]
  59. [InlineData(@"Season 1/02-03 - blah.avi", 3)]
  60. [InlineData(@"Season 2/02-04 - blah 14 blah.avi", 4)]
  61. [InlineData(@"Season 1/02-05 - blah-02 a.avi", 5)]
  62. [InlineData(@"Season 2/02-04.avi", 4)]
  63. [InlineData(@"Season 2 /[HorribleSubs] Hunter X Hunter - 136[720p].mkv", null)]
  64. // With format specification that must not be detected as ending episode number
  65. [InlineData(@"Season 1/series-s09e14-1080p.mkv", null)]
  66. [InlineData(@"Season 1/series-s09e14-720p.mkv", null)]
  67. [InlineData(@"Season 1/series-s09e14-720i.mkv", null)]
  68. [InlineData(@"Season 1/MOONLIGHTING_s01e01-e04.mkv", 4)]
  69. [InlineData(@"Season 1/MOONLIGHTING_s01e01-e04", 4)]
  70. public void TestGetEndingEpisodeNumberFromFile(string filename, int? endingEpisodeNumber)
  71. {
  72. var result = _episodePathParser.Parse(filename, false);
  73. Assert.Equal(result.EndingEpisodeNumber, endingEpisodeNumber);
  74. }
  75. }
  76. }