From 7483d5d3a5e445d06c5390b42ad75adb121e178b Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Thu, 19 Jan 2012 21:49:29 -0800 Subject: [PATCH] Added sab queue check for multiepisodes. --- .../ProviderTests/SabProviderTest.cs | 31 ++++++++++--------- NzbDrone.Core/Providers/SabProvider.cs | 2 +- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/NzbDrone.Core.Test/ProviderTests/SabProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/SabProviderTest.cs index 795f4e316..2832726a8 100644 --- a/NzbDrone.Core.Test/ProviderTests/SabProviderTest.cs +++ b/NzbDrone.Core.Test/ProviderTests/SabProviderTest.cs @@ -319,41 +319,44 @@ namespace NzbDrone.Core.Test.ProviderTests result.Should().BeTrue(); } - [TestCase(2, 5, "30 Rock", QualityTypes.Bluray1080p, true, Description = "Same Series, Diffrent Season, Episode")] - [TestCase(1, 6, "30 Rock", QualityTypes.Bluray1080p, true, Description = "Same series, diffrent episode")] - [TestCase(1, 6, "Some other show", QualityTypes.Bluray1080p, true, Description = "Diffrent series, same season, episdoe")] - [TestCase(1, 5, "Rock", QualityTypes.Bluray1080p, true, Description = "Similar series, same season, episode")] - [TestCase(1, 5, "30 Rock", QualityTypes.Bluray720p, false, Description = "Same series, higher quality")] - [TestCase(1, 5, "30 Rock", QualityTypes.HDTV, true, Description = "Same series, higher quality")] - public void IsInQueue_should_not_find_diffrent_episode_queue(int season, int episode, string title, QualityTypes qualityType, bool proper) + [TestCase(2, new[] { 5 }, "30 Rock", QualityTypes.Bluray1080p, true, Description = "Same Series, Diffrent Season, Episode")] + [TestCase(1, new[] { 6 }, "30 Rock", QualityTypes.Bluray1080p, true, Description = "Same series, diffrent episodes")] + [TestCase(1, new[] { 6,7,8 }, "30 Rock", QualityTypes.Bluray1080p, true, Description = "Same series, diffrent episodes")] + [TestCase(1, new[] { 6 }, "Some other show", QualityTypes.Bluray1080p, true, Description = "Diffrent series, same season, episdoe")] + [TestCase(1, new[] { 5 }, "Rock", QualityTypes.Bluray1080p, true, Description = "Similar series, same season, episodes")] + [TestCase(1, new[] { 5 }, "30 Rock", QualityTypes.Bluray720p, false, Description = "Same series, higher quality")] + [TestCase(1, new[] { 5 }, "30 Rock", QualityTypes.HDTV, true, Description = "Same series, higher quality")] + public void IsInQueue_should_not_find_diffrent_episode_queue(int season, int[] episodes, string title, QualityTypes qualityType, bool proper) { WithFullQueue(); var parseResult = new EpisodeParseResult { EpisodeTitle = "Title", - EpisodeNumbers = new List { episode }, + EpisodeNumbers = new List(episodes), SeasonNumber = season, Quality = new Quality { QualityType = qualityType, Proper = proper }, Series = new Series { Title = title }, }; - + var result = Mocker.Resolve().IsInQueue(parseResult); result.Should().BeFalse(); } - [TestCase(1, 5, "30 Rock", QualityTypes.SDTV, false, Description = "Same Series, lower quality")] - [TestCase(1, 5, "30 rocK", QualityTypes.SDTV, false, Description = "Same Series, diffrent casing")] - [TestCase(1, 5, "30 RocK", QualityTypes.HDTV, false, Description = "Same Series, same quality")] - public void IsInQueue_should_find_same_or_lower_quality_episode_queue(int season, int episode, string title, QualityTypes qualityType, bool proper) + [TestCase(1, new[] { 5 }, "30 Rock", QualityTypes.SDTV, false, Description = "Same Series, lower quality")] + [TestCase(1, new[] { 5 }, "30 rocK", QualityTypes.SDTV, false, Description = "Same Series, diffrent casing")] + [TestCase(1, new[] { 5 }, "30 RocK", QualityTypes.HDTV, false, Description = "Same Series, same quality")] + [TestCase(1, new[] { 5, 6 }, "30 RocK", QualityTypes.HDTV, false, Description = "Same Series, same quality, one diffrent episode")] + [TestCase(1, new[] { 5, 6 }, "30 RocK", QualityTypes.HDTV, false, Description = "Same Series, same quality, one diffrent episode")] + public void IsInQueue_should_find_same_or_lower_quality_episode_queue(int season, int[] episodes, string title, QualityTypes qualityType, bool proper) { WithFullQueue(); var parseResult = new EpisodeParseResult { EpisodeTitle = "Title", - EpisodeNumbers = new List { episode }, + EpisodeNumbers = new List(episodes), SeasonNumber = season, Quality = new Quality { QualityType = qualityType, Proper = proper }, Series = new Series { Title = title }, diff --git a/NzbDrone.Core/Providers/SabProvider.cs b/NzbDrone.Core/Providers/SabProvider.cs index 4120b2881..bd3b6603d 100644 --- a/NzbDrone.Core/Providers/SabProvider.cs +++ b/NzbDrone.Core/Providers/SabProvider.cs @@ -77,7 +77,7 @@ namespace NzbDrone.Core.Providers var queue = GetQueue(); return queue.Any(c => String.Equals(c.ParseResult.SeriesTitle, newParseResult.Series.Title, StringComparison.InvariantCultureIgnoreCase) && - c.ParseResult.EpisodeNumbers.SequenceEqual(newParseResult.EpisodeNumbers) && + c.ParseResult.EpisodeNumbers.Any(e=> newParseResult.EpisodeNumbers.Contains(e))&& c.ParseResult.SeasonNumber == newParseResult.SeasonNumber && c.ParseResult.Quality >= newParseResult.Quality); }