@ -120,7 +120,7 @@ namespace NzbDrone.Core.Test.ParserTests
ExceptionVerification . IgnoreWarns ( ) ;
}
[TestCase(" [DmonHiro] The Severing Crime Edge - Cut 02 - Portrait Of Heresy [ BD , 720 p ] [ BE36E9E0 ] ")]
[TestCase(" THIS SHOULD NEVER PARSE")]
public void unparsable_title_should_log_warn_and_return_null ( string title )
{
Parser . Parser . ParseTitle ( title ) . Should ( ) . BeNull ( ) ;
@ -147,7 +147,9 @@ namespace NzbDrone.Core.Test.ParserTests
[TestCase("Hell.on.Wheels.S02E09-E10.720p.HDTV.x264-EVOLVE", "Hell on Wheels", 2, new[] { 9 , 10 } ) ]
[TestCase("Grey's Anatomy - 8x01_02 - Free Falling", "Grey's Anatomy", 8, new [] { 1 , 2 } ) ]
[TestCase("8x01_02 - Free Falling", "", 8, new[] { 1 , 2 } ) ]
[TestCase("Kaamelott.S01E91-E100", "Kaamelott", 1,new[] { 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 , 100 } ) ]
[TestCase("Kaamelott.S01E91-E100", "Kaamelott", 1, new[] { 91 , 92 , 93 , 94 , 95 , 96 , 97 , 98 , 99 , 100 } ) ]
[TestCase("Neighbours.S29E161-E165.PDTV.x264-FQM", "Neighbours", 29, new[] { 161 , 162 , 163 , 164 , 165 } ) ]
[TestCase("Shortland.Street.S22E5363-E5366.HDTV.x264-FiHTV", "Shortland Street", 22, new[] { 5363 , 5364 , 5365 , 5366 } ) ]
public void TitleParse_multi ( string postTitle , string title , int season , int [ ] episodes )
{
var result = Parser . Parser . ParseTitle ( postTitle ) ;
@ -174,7 +176,39 @@ namespace NzbDrone.Core.Test.ParserTests
result . Should ( ) . NotBeNull ( ) ;
result . SeriesTitle . Should ( ) . Be ( title . CleanSeriesTitle ( ) ) ;
result . AirDate . Should ( ) . Be ( airDate . ToString ( Episode . AIR_DATE_FORMAT ) ) ;
result . EpisodeNumbers . Should ( ) . BeNull ( ) ;
result . EpisodeNumbers . Should ( ) . BeEmpty ( ) ;
}
[TestCase("[SubDESU] _High_School_DxD_07_ ( 1280 x720_x264 - AAC ) _ [ 6 B7FD717 ] ", " High School DxD ", 7, 0, 0)]
[TestCase("[Chihiro] _Working ! ! _ - _06_ [ 848 x480_H . 264_ AAC ] [ 859 EEAFA ] ", " Working ! ! ", 6, 0, 0)]
[TestCase("[Commie] _Senki_Zesshou_Symphogear_ - _11_ [ 65F 220 B4 ] ", " Senki_Zesshou_Symphogear ", 11, 0, 0)]
[TestCase("[Underwater] _Rinne_no_Lagrange_ - _12_ ( 720 p ) _ [ 5 C7BC4F9 ] ", " Rinne_no_Lagrange ", 12, 0, 0)]
[TestCase("[Commie] _Rinne_no_Lagrange_ - _15_ [ E76552EA ] ", " Rinne_no_Lagrange ", 15, 0, 0)]
[TestCase("[HorribleSubs] _Hunter_X_Hunter_ - _33_ [ 720 p ] ", " Hunter_X_Hunter ", 33, 0, 0)]
[TestCase("[HorribleSubs] _Fairy_Tail_ - _145_ [ 720 p ] ", " Fairy_Tail ", 145, 0, 0)]
[TestCase("[HorribleSubs] Tonari no Kaibutsu - kun - 13 [ 1080 p ] . mkv ", " Tonari no Kaibutsu - kun ", 13, 0, 0)]
[TestCase("[Doremi] . Yes . Pretty . Cure . 5. Go . Go ! . 31. [ 1280 x720 ] . [ C65D4B1F ] . mkv ", " Yes . Pretty . Cure . 5. Go . Go ! ", 31, 0, 0)]
[TestCase("[K-F] One Piece 214 ", " One Piece ", 214, 0, 0)]
[TestCase("[K-F] One Piece S10E14 214 ", " One Piece ", 214, 10, 14)]
[TestCase("[K-F] One Piece 10 x14 214 ", " One Piece ", 214, 10, 14)]
[TestCase("[K-F] One Piece 214 10 x14 ", " One Piece ", 214, 10, 14)]
[TestCase("One Piece S10E14 214", "One Piece", 214, 10, 14)]
[TestCase("One Piece 10x14 214", "One Piece", 214, 10, 14)]
[TestCase("One Piece 214 10x14", "One Piece", 214, 10, 14)]
[TestCase("214 One Piece 10x14", "One Piece", 214, 10, 14)]
[TestCase("Bleach - 031 - The Resolution to Kill [Lunar] . avi ", " Bleach ", 31, 0, 0)]
[TestCase("Bleach - 031 - The Resolution to Kill [Lunar] ", " Bleach ", 31, 0, 0)]
[TestCase("[ACX] Hack Sign 01 Role Play [ Kosaka ] [ 9 C57891E ] . mkv ", " Hack Sign ", 1, 0, 0)]
[TestCase("[SFW-sage] Bakuman S3 - 12 [ 720 p ] [ D07C91FC ] ", " Bakuman S3 ", 12, 0, 0)]
[TestCase("ducktales_e66_time_is_money_part_one_marking_time", "DuckTales", 66, 0, 0)]
public void parse_absolute_numbers ( string postTitle , string title , int absoluteEpisodeNumber , int seasonNumber , int episodeNumber )
{
var result = Parser . Parser . ParseTitle ( postTitle ) ;
result . Should ( ) . NotBeNull ( ) ;
result . AbsoluteEpisodeNumbers . First ( ) . Should ( ) . Be ( absoluteEpisodeNumber ) ;
result . SeasonNumber . Should ( ) . Be ( seasonNumber ) ;
result . EpisodeNumbers . FirstOrDefault ( ) . Should ( ) . Be ( episodeNumber ) ;
result . SeriesTitle . Should ( ) . Be ( title . CleanSeriesTitle ( ) ) ;
}