|
|
@ -33,6 +33,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_episodes = Builder<Episode>.CreateListOfSize(10)
|
|
|
|
_episodes = Builder<Episode>.CreateListOfSize(10)
|
|
|
|
.All()
|
|
|
|
.All()
|
|
|
|
.With(s => s.SeasonNumber = 1)
|
|
|
|
.With(s => s.SeasonNumber = 1)
|
|
|
|
|
|
|
|
.With(s => s.Runtime = 30)
|
|
|
|
.BuildList();
|
|
|
|
.BuildList();
|
|
|
|
|
|
|
|
|
|
|
|
_parseResultMultiSet = new RemoteEpisode
|
|
|
|
_parseResultMultiSet = new RemoteEpisode
|
|
|
@ -40,7 +41,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
Series = _series,
|
|
|
|
Series = _series,
|
|
|
|
Release = new ReleaseInfo(),
|
|
|
|
Release = new ReleaseInfo(),
|
|
|
|
ParsedEpisodeInfo = new ParsedEpisodeInfo { Quality = new QualityModel(Quality.SDTV, new Revision(version: 2)) },
|
|
|
|
ParsedEpisodeInfo = new ParsedEpisodeInfo { Quality = new QualityModel(Quality.SDTV, new Revision(version: 2)) },
|
|
|
|
Episodes = Builder<Episode>.CreateListOfSize(6).All().With(s => s.SeasonNumber = 1).BuildList()
|
|
|
|
Episodes = Builder<Episode>.CreateListOfSize(6)
|
|
|
|
|
|
|
|
.All()
|
|
|
|
|
|
|
|
.With(s => s.SeasonNumber = 1)
|
|
|
|
|
|
|
|
.With(s => s.Runtime = 30)
|
|
|
|
|
|
|
|
.BuildList()
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
_parseResultMulti = new RemoteEpisode
|
|
|
|
_parseResultMulti = new RemoteEpisode
|
|
|
@ -48,7 +53,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
Series = _series,
|
|
|
|
Series = _series,
|
|
|
|
Release = new ReleaseInfo(),
|
|
|
|
Release = new ReleaseInfo(),
|
|
|
|
ParsedEpisodeInfo = new ParsedEpisodeInfo { Quality = new QualityModel(Quality.SDTV, new Revision(version: 2)) },
|
|
|
|
ParsedEpisodeInfo = new ParsedEpisodeInfo { Quality = new QualityModel(Quality.SDTV, new Revision(version: 2)) },
|
|
|
|
Episodes = Builder<Episode>.CreateListOfSize(2).All().With(s => s.SeasonNumber = 1).BuildList()
|
|
|
|
Episodes = Builder<Episode>.CreateListOfSize(2)
|
|
|
|
|
|
|
|
.All()
|
|
|
|
|
|
|
|
.With(s => s.SeasonNumber = 1)
|
|
|
|
|
|
|
|
.With(s => s.Runtime = 30)
|
|
|
|
|
|
|
|
.BuildList()
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
_parseResultSingle = new RemoteEpisode
|
|
|
|
_parseResultSingle = new RemoteEpisode
|
|
|
@ -61,6 +70,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
Builder<Episode>.CreateNew()
|
|
|
|
Builder<Episode>.CreateNew()
|
|
|
|
.With(s => s.SeasonNumber = 1)
|
|
|
|
.With(s => s.SeasonNumber = 1)
|
|
|
|
.With(s => s.EpisodeNumber = 1)
|
|
|
|
.With(s => s.EpisodeNumber = 1)
|
|
|
|
|
|
|
|
.With(s => s.Runtime = 30)
|
|
|
|
.Build()
|
|
|
|
.Build()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -94,13 +104,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Release.Size = sizeInMegaBytes.Megabytes();
|
|
|
|
_parseResultSingle.Release.Size = sizeInMegaBytes.Megabytes();
|
|
|
|
_parseResultSingle.Episodes.First().Id = 5;
|
|
|
|
_parseResultSingle.Episodes.First().Id = 5;
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = runtime;
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(expectedResult);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(expectedResult);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestCase(30, 500, true)]
|
|
|
|
[TestCase(30, 250, true)]
|
|
|
|
[TestCase(30, 1000, false)]
|
|
|
|
[TestCase(30, 1000, false)]
|
|
|
|
[TestCase(60, 1000, true)]
|
|
|
|
[TestCase(60, 250, true)]
|
|
|
|
[TestCase(60, 2000, false)]
|
|
|
|
[TestCase(60, 2000, false)]
|
|
|
|
public void should_return_expected_result_for_first_episode_of_season(int runtime, int sizeInMegaBytes, bool expectedResult)
|
|
|
|
public void should_return_expected_result_for_first_episode_of_season(int runtime, int sizeInMegaBytes, bool expectedResult)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -108,13 +119,14 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Release.Size = sizeInMegaBytes.Megabytes();
|
|
|
|
_parseResultSingle.Release.Size = sizeInMegaBytes.Megabytes();
|
|
|
|
_parseResultSingle.Episodes.First().Id = _episodes.First().Id;
|
|
|
|
_parseResultSingle.Episodes.First().Id = _episodes.First().Id;
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = _episodes.First().Runtime;
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(expectedResult);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(expectedResult);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[TestCase(30, 500, true)]
|
|
|
|
[TestCase(30, 250, true)]
|
|
|
|
[TestCase(30, 1000, false)]
|
|
|
|
[TestCase(30, 1000, false)]
|
|
|
|
[TestCase(60, 1000, true)]
|
|
|
|
[TestCase(60, 250, true)]
|
|
|
|
[TestCase(60, 2000, false)]
|
|
|
|
[TestCase(60, 2000, false)]
|
|
|
|
public void should_return_expected_result_for_last_episode_of_season(int runtime, int sizeInMegaBytes, bool expectedResult)
|
|
|
|
public void should_return_expected_result_for_last_episode_of_season(int runtime, int sizeInMegaBytes, bool expectedResult)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -122,6 +134,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Release.Size = sizeInMegaBytes.Megabytes();
|
|
|
|
_parseResultSingle.Release.Size = sizeInMegaBytes.Megabytes();
|
|
|
|
_parseResultSingle.Episodes.First().Id = _episodes.Last().Id;
|
|
|
|
_parseResultSingle.Episodes.First().Id = _episodes.Last().Id;
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = _episodes.First().Runtime;
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(expectedResult);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(expectedResult);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -137,6 +150,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_series.Runtime = runtime;
|
|
|
|
_series.Runtime = runtime;
|
|
|
|
_parseResultMulti.Series = _series;
|
|
|
|
_parseResultMulti.Series = _series;
|
|
|
|
_parseResultMulti.Release.Size = sizeInMegaBytes.Megabytes();
|
|
|
|
_parseResultMulti.Release.Size = sizeInMegaBytes.Megabytes();
|
|
|
|
|
|
|
|
_parseResultMulti.Episodes.ForEach(e => e.Runtime = runtime);
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(expectedResult);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(expectedResult);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -152,6 +166,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_series.Runtime = runtime;
|
|
|
|
_series.Runtime = runtime;
|
|
|
|
_parseResultMultiSet.Series = _series;
|
|
|
|
_parseResultMultiSet.Series = _series;
|
|
|
|
_parseResultMultiSet.Release.Size = sizeInMegaBytes.Megabytes();
|
|
|
|
_parseResultMultiSet.Release.Size = sizeInMegaBytes.Megabytes();
|
|
|
|
|
|
|
|
_parseResultMultiSet.Episodes.ForEach(e => e.Runtime = runtime);
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultMultiSet, null).Accepted.Should().Be(expectedResult);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultMultiSet, null).Accepted.Should().Be(expectedResult);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -162,6 +177,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_series.Runtime = 30;
|
|
|
|
_series.Runtime = 30;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Release.Size = 0;
|
|
|
|
_parseResultSingle.Release.Size = 0;
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = 30;
|
|
|
|
_qualityType.MinSize = 10;
|
|
|
|
_qualityType.MinSize = 10;
|
|
|
|
_qualityType.MaxSize = 20;
|
|
|
|
_qualityType.MaxSize = 20;
|
|
|
|
|
|
|
|
|
|
|
@ -174,6 +190,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_series.Runtime = 30;
|
|
|
|
_series.Runtime = 30;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Release.Size = 18457280000;
|
|
|
|
_parseResultSingle.Release.Size = 18457280000;
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = 30;
|
|
|
|
_qualityType.MaxSize = null;
|
|
|
|
_qualityType.MaxSize = null;
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
|
|
|
@ -185,6 +202,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_series.Runtime = 60;
|
|
|
|
_series.Runtime = 60;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Release.Size = 36857280000;
|
|
|
|
_parseResultSingle.Release.Size = 36857280000;
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = 60;
|
|
|
|
_qualityType.MaxSize = null;
|
|
|
|
_qualityType.MaxSize = null;
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
|
|
|
@ -197,6 +215,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Series.SeriesType = SeriesTypes.Daily;
|
|
|
|
_parseResultSingle.Series.SeriesType = SeriesTypes.Daily;
|
|
|
|
_parseResultSingle.Release.Size = 300.Megabytes();
|
|
|
|
_parseResultSingle.Release.Size = 300.Megabytes();
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = 60;
|
|
|
|
|
|
|
|
|
|
|
|
_qualityType.MaxSize = 10;
|
|
|
|
_qualityType.MaxSize = 10;
|
|
|
|
|
|
|
|
|
|
|
@ -212,6 +231,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
_parseResultSingle.Series.SeriesType = SeriesTypes.Daily;
|
|
|
|
_parseResultSingle.Series.SeriesType = SeriesTypes.Daily;
|
|
|
|
_parseResultSingle.Release.Size = 8000.Megabytes();
|
|
|
|
_parseResultSingle.Release.Size = 8000.Megabytes();
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = 30;
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().BeTrue();
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -232,6 +252,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_parseResultSingle.Episodes.First().Id = 5;
|
|
|
|
_parseResultSingle.Episodes.First().Id = 5;
|
|
|
|
_parseResultSingle.Release.Size = 200.Megabytes();
|
|
|
|
_parseResultSingle.Release.Size = 200.Megabytes();
|
|
|
|
_parseResultSingle.Episodes.First().SeasonNumber = 2;
|
|
|
|
_parseResultSingle.Episodes.First().SeasonNumber = 2;
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = 0;
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(false);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -247,6 +268,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_parseResultSingle.Episodes.First().SeasonNumber = 1;
|
|
|
|
_parseResultSingle.Episodes.First().SeasonNumber = 1;
|
|
|
|
_parseResultSingle.Episodes.First().EpisodeNumber = 2;
|
|
|
|
_parseResultSingle.Episodes.First().EpisodeNumber = 2;
|
|
|
|
_parseResultSingle.Episodes.First().AirDateUtc = _episodes.First().AirDateUtc.Value.AddDays(7);
|
|
|
|
_parseResultSingle.Episodes.First().AirDateUtc = _episodes.First().AirDateUtc.Value.AddDays(7);
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = 0;
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(false);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -262,6 +284,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_parseResultSingle.Episodes.First().SeasonNumber = 1;
|
|
|
|
_parseResultSingle.Episodes.First().SeasonNumber = 1;
|
|
|
|
_parseResultSingle.Episodes.First().EpisodeNumber = 2;
|
|
|
|
_parseResultSingle.Episodes.First().EpisodeNumber = 2;
|
|
|
|
_parseResultSingle.Episodes.First().AirDateUtc = _episodes.First().AirDateUtc.Value.AddHours(1);
|
|
|
|
_parseResultSingle.Episodes.First().AirDateUtc = _episodes.First().AirDateUtc.Value.AddHours(1);
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.First().Runtime = 0;
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(true);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -272,7 +295,11 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
_series.Runtime = 0;
|
|
|
|
_series.Runtime = 0;
|
|
|
|
_parseResultMulti.Series = _series;
|
|
|
|
_parseResultMulti.Series = _series;
|
|
|
|
_parseResultMulti.Release.Size = 200.Megabytes();
|
|
|
|
_parseResultMulti.Release.Size = 200.Megabytes();
|
|
|
|
_parseResultMulti.Episodes.ForEach(e => e.SeasonNumber = 2);
|
|
|
|
_parseResultMulti.Episodes.ForEach(e =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
e.SeasonNumber = 2;
|
|
|
|
|
|
|
|
e.Runtime = 0;
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(false);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -290,6 +317,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
{
|
|
|
|
{
|
|
|
|
e.SeasonNumber = 1;
|
|
|
|
e.SeasonNumber = 1;
|
|
|
|
e.AirDateUtc = airDateUtc;
|
|
|
|
e.AirDateUtc = airDateUtc;
|
|
|
|
|
|
|
|
e.Runtime = 0;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(false);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(false);
|
|
|
@ -308,9 +336,29 @@ namespace NzbDrone.Core.Test.DecisionEngineTests
|
|
|
|
{
|
|
|
|
{
|
|
|
|
e.SeasonNumber = 1;
|
|
|
|
e.SeasonNumber = 1;
|
|
|
|
e.AirDateUtc = airDateUtc;
|
|
|
|
e.AirDateUtc = airDateUtc;
|
|
|
|
|
|
|
|
e.Runtime = 0;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(true);
|
|
|
|
Subject.IsSatisfiedBy(_parseResultMulti, null).Accepted.Should().Be(true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
|
|
|
public void should_use_series_runtime_if_episode_runtime_is_not_set()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var airDateUtc = _episodes.First().AirDateUtc.Value.AddHours(1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_series.Runtime = 30;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_parseResultSingle.Series = _series;
|
|
|
|
|
|
|
|
_parseResultSingle.Release.Size = 200.Megabytes();
|
|
|
|
|
|
|
|
_parseResultSingle.Episodes.ForEach(e =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
e.SeasonNumber = 1;
|
|
|
|
|
|
|
|
e.AirDateUtc = airDateUtc;
|
|
|
|
|
|
|
|
e.Runtime = 0;
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Subject.IsSatisfiedBy(_parseResultSingle, null).Accepted.Should().Be(true);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|