/src/NzbDrone.Core.Test/ParserTests/ParserFixture.cs

https://github.com/NzbDrone/NzbDrone · C# · 99 lines · 89 code · 10 blank · 0 comment · 0 complexity · ed9176292d89ea0c10f01aa22d5cf86d MD5 · raw file

  1. using System.Linq;
  2. using FluentAssertions;
  3. using NUnit.Framework;
  4. using NzbDrone.Core.Parser;
  5. using NzbDrone.Core.Qualities;
  6. using NzbDrone.Core.Test.Framework;
  7. namespace NzbDrone.Core.Test.ParserTests
  8. {
  9. [TestFixture]
  10. public class ParserFixture : CoreTest
  11. {
  12. [TestCase("Series Title - 4x05 - Title", "seriestitle")]
  13. [TestCase("Series & Title - 4x05 - Title", "seriestitle")]
  14. [TestCase("Bad Format", "badformat")]
  15. [TestCase("Mad Series - Season 1 [Bluray720p]", "madseries")]
  16. [TestCase("Mad Series - Season 1 [Bluray1080p]", "madseries")]
  17. [TestCase("The Daily Series -", "thedailyseries")]
  18. [TestCase("The Series Bros. (2006)", "theseriesbros2006")]
  19. [TestCase("Series (2011)", "series2011")]
  20. [TestCase("Series Time S02 720p HDTV x264 CRON", "seriestime")]
  21. [TestCase("Series Title 0", "seriestitle0")]
  22. [TestCase("Series of the Day", "seriesday")]
  23. [TestCase("Series of the Day 2", "seriesday2")]
  24. [TestCase("[ www.Torrenting.com ] - Series.S03E14.720p.HDTV.X264-DIMENSION", "series")]
  25. [TestCase("www.Torrenting.com - Series.S03E14.720p.HDTV.X264-DIMENSION", "series")]
  26. [TestCase("Series S02E09 HDTV x264-2HD [eztv]-[rarbg.com]", "series")]
  27. [TestCase("Series.911.S01.DVDRip.DD2.0.x264-DEEP", "series 911")]
  28. [TestCase("www.Torrenting.org - Series.S03E14.720p.HDTV.X264-DIMENSION", "series")]
  29. public void should_parse_series_name(string postTitle, string title)
  30. {
  31. var result = Parser.Parser.ParseSeriesName(postTitle).CleanSeriesTitle();
  32. result.Should().Be(title.CleanSeriesTitle());
  33. }
  34. [TestCase("Series S03E14 720p HDTV X264-DIMENSION", "Series")]
  35. [TestCase("Series.S03E14.720p.HDTV.X264-DIMENSION", "Series")]
  36. [TestCase("Series-S03E14-720p-HDTV-X264-DIMENSION", "Series")]
  37. [TestCase("Series_S03E14_720p_HDTV_X264-DIMENSION", "Series")]
  38. [TestCase("Series 2022 S03E14 720p HDTV X264-DIMENSION", "Series", 2022)]
  39. [TestCase("Series (2022) S03E14 720p HDTV X264-DIMENSION", "Series", 2022)]
  40. [TestCase("Series.2022.S03E14.720p.HDTV.X264-DIMENSION", "Series", 2022)]
  41. [TestCase("Series-2022-S03E14-720p-HDTV-X264-DIMENSION", "Series", 2022)]
  42. [TestCase("Series_2022_S03E14_720p_HDTV_X264-DIMENSION", "Series", 2022)]
  43. [TestCase("1234 S03E14 720p HDTV X264-DIMENSION", "1234")]
  44. [TestCase("1234.S03E14.720p.HDTV.X264-DIMENSION", "1234")]
  45. [TestCase("1234-S03E14-720p-HDTV-X264-DIMENSION", "1234")]
  46. [TestCase("1234_S03E14_720p_HDTV_X264-DIMENSION", "1234")]
  47. [TestCase("1234 2022 S03E14 720p HDTV X264-DIMENSION", "1234", 2022)]
  48. [TestCase("1234 (2022) S03E14 720p HDTV X264-DIMENSION", "1234", 2022)]
  49. [TestCase("1234.2022.S03E14.720p.HDTV.X264-DIMENSION", "1234", 2022)]
  50. [TestCase("1234-2022-S03E14-720p-HDTV-X264-DIMENSION", "1234", 2022)]
  51. [TestCase("1234_2022_S03E14_720p_HDTV_X264-DIMENSION", "1234", 2022)]
  52. public void should_parse_series_title_info(string postTitle, string titleWithoutYear, int year = 0)
  53. {
  54. var seriesTitleInfo = Parser.Parser.ParseTitle(postTitle).SeriesTitleInfo;
  55. seriesTitleInfo.TitleWithoutYear.Should().Be(titleWithoutYear);
  56. seriesTitleInfo.Year.Should().Be(year);
  57. }
  58. [Test]
  59. public void should_remove_accents_from_title()
  60. {
  61. const string title = "Seri\u00E0es";
  62. title.CleanSeriesTitle().Should().Be("seriaes");
  63. }
  64. [TestCase("Sonar TV - Series Title : 02 Road From Code [S04].mp4")]
  65. public void should_clean_up_invalid_path_characters(string postTitle)
  66. {
  67. Parser.Parser.ParseTitle(postTitle);
  68. }
  69. [TestCase("[scnzbefnet][509103] 2.Developers.Series.S03E18.720p.HDTV.X264-DIMENSION", "2 Developers Series")]
  70. public void should_remove_request_info_from_title(string postTitle, string title)
  71. {
  72. Parser.Parser.ParseTitle(postTitle).SeriesTitle.Should().Be(title);
  73. }
  74. [TestCase("Series.S01E02.Chained.Title.mkv")]
  75. [TestCase("Show - S01E01 - Title.avi")]
  76. public void should_parse_quality_from_extension(string title)
  77. {
  78. Parser.Parser.ParseTitle(title).Quality.Quality.Should().NotBe(Quality.Unknown);
  79. Parser.Parser.ParseTitle(title).Quality.SourceDetectionSource.Should().Be(QualityDetectionSource.Extension);
  80. Parser.Parser.ParseTitle(title).Quality.ResolutionDetectionSource.Should().Be(QualityDetectionSource.Extension);
  81. }
  82. [TestCase("Series.S01E02.Chained.Title.mkv", "Series.S01E02.Chained.Title")]
  83. public void should_parse_releasetitle(string path, string releaseTitle)
  84. {
  85. var result = Parser.Parser.ParseTitle(path);
  86. result.ReleaseTitle.Should().Be(releaseTitle);
  87. }
  88. }
  89. }