2020-11-12 12:16:33 +00:00
using System.IO ;
2020-01-11 19:25:06 +00:00
using Emby.Naming.Common ;
using Emby.Naming.Video ;
2019-12-06 19:40:06 +00:00
using Xunit ;
namespace Jellyfin.Naming.Tests.Video
{
2020-01-11 19:25:06 +00:00
public sealed class CleanDateTimeTests
2019-12-06 19:40:06 +00:00
{
2020-01-11 19:25:06 +00:00
private readonly NamingOptions _namingOptions = new NamingOptions ( ) ;
[Theory]
[InlineData(@"The Wolf of Wall Street (2013).mkv", "The Wolf of Wall Street", 2013)]
[InlineData(@"The Wolf of Wall Street 2 (2013).mkv", "The Wolf of Wall Street 2", 2013)]
[InlineData(@"The Wolf of Wall Street - 2 (2013).mkv", "The Wolf of Wall Street - 2", 2013)]
[InlineData(@"The Wolf of Wall Street 2001 (2013).mkv", "The Wolf of Wall Street 2001", 2013)]
[InlineData(@"300 (2006).mkv", "300", 2006)]
[InlineData(@"d:/movies/300 (2006).mkv", "300", 2006)]
[InlineData(@"300 2 (2006).mkv", "300 2", 2006)]
[InlineData(@"300 - 2 (2006).mkv", "300 - 2", 2006)]
[InlineData(@"300 2001 (2006).mkv", "300 2001", 2006)]
[InlineData(@"curse.of.chucky.2013.stv.unrated.multi.1080p.bluray.x264-rough", "curse.of.chucky", 2013)]
[InlineData(@"curse.of.chucky.2013.stv.unrated.multi.2160p.bluray.x264-rough", "curse.of.chucky", 2013)]
[InlineData(@"/server/Movies/300 (2007)/300 (2006).bluray.disc", "300", 2006)]
[InlineData(@"Arrival.2016.2160p.Blu-Ray.HEVC.mkv", "Arrival", 2016)]
[InlineData(@"The Wolf of Wall Street (2013)", "The Wolf of Wall Street", 2013)]
[InlineData(@"The Wolf of Wall Street 2 (2013)", "The Wolf of Wall Street 2", 2013)]
[InlineData(@"The Wolf of Wall Street - 2 (2013)", "The Wolf of Wall Street - 2", 2013)]
[InlineData(@"The Wolf of Wall Street 2001 (2013)", "The Wolf of Wall Street 2001", 2013)]
[InlineData(@"300 (2006)", "300", 2006)]
[InlineData(@"d:/movies/300 (2006)", "300", 2006)]
[InlineData(@"300 2 (2006)", "300 2", 2006)]
[InlineData(@"300 - 2 (2006)", "300 - 2", 2006)]
[InlineData(@"300 2001 (2006)", "300 2001", 2006)]
[InlineData(@"/server/Movies/300 (2007)/300 (2006)", "300", 2006)]
[InlineData(@"/server/Movies/300 (2007)/300 (2006).mkv", "300", 2006)]
[InlineData(@"American.Psycho.mkv", "American.Psycho.mkv", null)]
[InlineData(@"American Psycho.mkv", "American Psycho.mkv", null)]
[InlineData(@"[rec] . mkv ", " [ rec ] . mkv ", null)]
[InlineData(@"St. Vincent (2014)", "St. Vincent", 2014)]
[InlineData("Super movie(2009).mp4", "Super movie", 2009)]
2020-04-13 13:55:18 +00:00
[InlineData("Drug War 2013.mp4", "Drug War", 2013)]
2020-01-11 19:25:06 +00:00
[InlineData("My Movie (1997) - GreatestReleaseGroup 2019.mp4", "My Movie", 1997)]
2020-04-13 13:55:18 +00:00
[InlineData("First Man 2018 1080p.mkv", "First Man", 2018)]
2020-01-11 19:25:06 +00:00
[InlineData("First Man (2018) 1080p.mkv", "First Man", 2018)]
2020-04-13 13:55:18 +00:00
[InlineData("Maximum Ride - 2016 - WEBDL-1080p - x264 AC3.mkv", "Maximum Ride", 2016)]
2020-04-13 14:11:02 +00:00
// FIXME: [InlineData("Robin Hood [Multi-Subs] [2018].mkv", "Robin Hood", 2018)]
2020-01-11 19:25:06 +00:00
[InlineData(@"3.Days.to.Kill.2014.720p.BluRay.x264.YIFY.mkv", "3.Days.to.Kill", 2014)] // In this test case, running CleanDateTime first produces no date, so it will attempt to run CleanString first and then CleanDateTime again
2020-04-21 10:11:55 +00:00
[InlineData("3 days to kill (2005).mkv", "3 days to kill", 2005)]
2020-05-04 03:44:18 +00:00
[InlineData(@"Rain Man 1988 REMASTERED 1080p BluRay x264 AAC - Ozlem.mp4", "Rain Man", 1988)]
2020-08-12 15:20:31 +00:00
[InlineData("My Movie 2013.12.09", "My Movie 2013.12.09", null)]
[InlineData("My Movie 2013-12-09", "My Movie 2013-12-09", null)]
[InlineData("My Movie 20131209", "My Movie 20131209", null)]
[InlineData("My Movie 2013-12-09 2013", "My Movie 2013-12-09", 2013)]
2020-11-12 12:16:33 +00:00
[InlineData(null, null, null)]
[InlineData("", "", null)]
2020-01-11 19:25:06 +00:00
public void CleanDateTimeTest ( string input , string expectedName , int? expectedYear )
2019-12-06 19:40:06 +00:00
{
input = Path . GetFileName ( input ) ;
2021-05-23 22:30:41 +00:00
var result = VideoResolver . CleanDateTime ( input , _namingOptions ) ;
2019-12-06 19:40:06 +00:00
Assert . Equal ( expectedName , result . Name , true ) ;
Assert . Equal ( expectedYear , result . Year ) ;
}
}
}