aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Naming/Video/VideoResolver.cs4
-rw-r--r--Emby.Server.Implementations/ConfigurationOptions.cs1
-rw-r--r--tests/Jellyfin.Naming.Tests/Video/CleanDateTimeTests.cs1
-rw-r--r--tests/Jellyfin.Naming.Tests/Video/ExtraTests.cs2
-rw-r--r--tests/Jellyfin.Naming.Tests/Video/Format3DTests.cs59
-rw-r--r--tests/Jellyfin.Naming.Tests/Video/MultiVersionTests.cs5
-rw-r--r--tests/Jellyfin.Naming.Tests/Video/StackTests.cs6
-rw-r--r--tests/Jellyfin.Naming.Tests/Video/StubTests.cs10
-rw-r--r--tests/Jellyfin.Naming.Tests/Video/VideoListResolverTests.cs4
-rw-r--r--tests/Jellyfin.Naming.Tests/Video/VideoResolverTests.cs461
10 files changed, 242 insertions, 311 deletions
diff --git a/Emby.Naming/Video/VideoResolver.cs b/Emby.Naming/Video/VideoResolver.cs
index 0b75a8cce..a26c4bbc6 100644
--- a/Emby.Naming/Video/VideoResolver.cs
+++ b/Emby.Naming/Video/VideoResolver.cs
@@ -89,14 +89,14 @@ namespace Emby.Naming.Video
if (parseName)
{
var cleanDateTimeResult = CleanDateTime(name);
+ name = cleanDateTimeResult.Name;
+ year = cleanDateTimeResult.Year;
if (extraResult.ExtraType == null
&& TryCleanString(cleanDateTimeResult.Name, out ReadOnlySpan<char> newName))
{
name = newName.ToString();
}
-
- year = cleanDateTimeResult.Year;
}
return new VideoFileInfo
diff --git a/Emby.Server.Implementations/ConfigurationOptions.cs b/Emby.Server.Implementations/ConfigurationOptions.cs
index db7c35a7c..dea9b6682 100644
--- a/Emby.Server.Implementations/ConfigurationOptions.cs
+++ b/Emby.Server.Implementations/ConfigurationOptions.cs
@@ -1,7 +1,6 @@
using System.Collections.Generic;
using Emby.Server.Implementations.HttpServer;
using Emby.Server.Implementations.Updates;
-using MediaBrowser.Providers.Music;
using static MediaBrowser.Controller.Extensions.ConfigurationExtensions;
namespace Emby.Server.Implementations
diff --git a/tests/Jellyfin.Naming.Tests/Video/CleanDateTimeTests.cs b/tests/Jellyfin.Naming.Tests/Video/CleanDateTimeTests.cs
index 49cb2387b..917d8fb3a 100644
--- a/tests/Jellyfin.Naming.Tests/Video/CleanDateTimeTests.cs
+++ b/tests/Jellyfin.Naming.Tests/Video/CleanDateTimeTests.cs
@@ -46,6 +46,7 @@ namespace Jellyfin.Naming.Tests.Video
[InlineData("Maximum Ride - 2016 - WEBDL-1080p - x264 AC3.mkv", "Maximum Ride", 2016)]
// FIXME: [InlineData("Robin Hood [Multi-Subs] [2018].mkv", "Robin Hood", 2018)]
[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
+ [InlineData("3 days to kill (2005).mkv", "3 days to kill", 2005)]
public void CleanDateTimeTest(string input, string expectedName, int? expectedYear)
{
input = Path.GetFileName(input);
diff --git a/tests/Jellyfin.Naming.Tests/Video/ExtraTests.cs b/tests/Jellyfin.Naming.Tests/Video/ExtraTests.cs
index a64d17349..a2722a175 100644
--- a/tests/Jellyfin.Naming.Tests/Video/ExtraTests.cs
+++ b/tests/Jellyfin.Naming.Tests/Video/ExtraTests.cs
@@ -5,7 +5,7 @@ using Xunit;
namespace Jellyfin.Naming.Tests.Video
{
- public class ExtraTests : BaseVideoTest
+ public class ExtraTests
{
private readonly NamingOptions _videoOptions = new NamingOptions();
diff --git a/tests/Jellyfin.Naming.Tests/Video/Format3DTests.cs b/tests/Jellyfin.Naming.Tests/Video/Format3DTests.cs
index ed3112936..82004081e 100644
--- a/tests/Jellyfin.Naming.Tests/Video/Format3DTests.cs
+++ b/tests/Jellyfin.Naming.Tests/Video/Format3DTests.cs
@@ -4,26 +4,26 @@ using Xunit;
namespace Jellyfin.Naming.Tests.Video
{
- public class Format3DTests : BaseVideoTest
+ public class Format3DTests
{
+ private readonly NamingOptions _namingOptions = new NamingOptions();
+
[Fact]
public void TestKodiFormat3D()
{
- var options = new NamingOptions();
-
- Test("Super movie.3d.mp4", false, null, options);
- Test("Super movie.3d.hsbs.mp4", true, "hsbs", options);
- Test("Super movie.3d.sbs.mp4", true, "sbs", options);
- Test("Super movie.3d.htab.mp4", true, "htab", options);
- Test("Super movie.3d.tab.mp4", true, "tab", options);
- Test("Super movie 3d hsbs.mp4", true, "hsbs", options);
+ Test("Super movie.3d.mp4", false, null);
+ Test("Super movie.3d.hsbs.mp4", true, "hsbs");
+ Test("Super movie.3d.sbs.mp4", true, "sbs");
+ Test("Super movie.3d.htab.mp4", true, "htab");
+ Test("Super movie.3d.tab.mp4", true, "tab");
+ Test("Super movie 3d hsbs.mp4", true, "hsbs");
}
[Fact]
public void Test3DName()
{
var result =
- GetParser().ResolveFile(@"C:/Users/media/Desktop/Video Test/Movies/Oblivion/Oblivion.3d.hsbs.mkv");
+ new VideoResolver(_namingOptions).ResolveFile(@"C:/Users/media/Desktop/Video Test/Movies/Oblivion/Oblivion.3d.hsbs.mkv");
Assert.Equal("hsbs", result.Format3D);
Assert.Equal("Oblivion", result.Name);
@@ -34,32 +34,31 @@ namespace Jellyfin.Naming.Tests.Video
{
// These were introduced for Media Browser 3
// Kodi conventions are preferred but these still need to be supported
- var options = new NamingOptions();
- Test("Super movie.3d.mp4", false, null, options);
- Test("Super movie.3d.hsbs.mp4", true, "hsbs", options);
- Test("Super movie.3d.sbs.mp4", true, "sbs", options);
- Test("Super movie.3d.htab.mp4", true, "htab", options);
- Test("Super movie.3d.tab.mp4", true, "tab", options);
+ Test("Super movie.3d.mp4", false, null);
+ Test("Super movie.3d.hsbs.mp4", true, "hsbs");
+ Test("Super movie.3d.sbs.mp4", true, "sbs");
+ Test("Super movie.3d.htab.mp4", true, "htab");
+ Test("Super movie.3d.tab.mp4", true, "tab");
- Test("Super movie.hsbs.mp4", true, "hsbs", options);
- Test("Super movie.sbs.mp4", true, "sbs", options);
- Test("Super movie.htab.mp4", true, "htab", options);
- Test("Super movie.tab.mp4", true, "tab", options);
- Test("Super movie.sbs3d.mp4", true, "sbs3d", options);
- Test("Super movie.3d.mvc.mp4", true, "mvc", options);
+ Test("Super movie.hsbs.mp4", true, "hsbs");
+ Test("Super movie.sbs.mp4", true, "sbs");
+ Test("Super movie.htab.mp4", true, "htab");
+ Test("Super movie.tab.mp4", true, "tab");
+ Test("Super movie.sbs3d.mp4", true, "sbs3d");
+ Test("Super movie.3d.mvc.mp4", true, "mvc");
- Test("Super movie [3d].mp4", false, null, options);
- Test("Super movie [hsbs].mp4", true, "hsbs", options);
- Test("Super movie [fsbs].mp4", true, "fsbs", options);
- Test("Super movie [ftab].mp4", true, "ftab", options);
- Test("Super movie [htab].mp4", true, "htab", options);
- Test("Super movie [sbs3d].mp4", true, "sbs3d", options);
+ Test("Super movie [3d].mp4", false, null);
+ Test("Super movie [hsbs].mp4", true, "hsbs");
+ Test("Super movie [fsbs].mp4", true, "fsbs");
+ Test("Super movie [ftab].mp4", true, "ftab");
+ Test("Super movie [htab].mp4", true, "htab");
+ Test("Super movie [sbs3d].mp4", true, "sbs3d");
}
- private void Test(string input, bool is3D, string format3D, NamingOptions options)
+ private void Test(string input, bool is3D, string format3D)
{
- var parser = new Format3DParser(options);
+ var parser = new Format3DParser(_namingOptions);
var result = parser.Parse(input);
diff --git a/tests/Jellyfin.Naming.Tests/Video/MultiVersionTests.cs b/tests/Jellyfin.Naming.Tests/Video/MultiVersionTests.cs
index b8fbb2cb2..03fe32b6e 100644
--- a/tests/Jellyfin.Naming.Tests/Video/MultiVersionTests.cs
+++ b/tests/Jellyfin.Naming.Tests/Video/MultiVersionTests.cs
@@ -8,6 +8,8 @@ namespace Jellyfin.Naming.Tests.Video
{
public class MultiVersionTests
{
+ private readonly NamingOptions _namingOptions = new NamingOptions();
+
// FIXME
// [Fact]
public void TestMultiEdition1()
@@ -430,8 +432,7 @@ namespace Jellyfin.Naming.Tests.Video
private VideoListResolver GetResolver()
{
- var options = new NamingOptions();
- return new VideoListResolver(options);
+ return new VideoListResolver(_namingOptions);
}
}
}
diff --git a/tests/Jellyfin.Naming.Tests/Video/StackTests.cs b/tests/Jellyfin.Naming.Tests/Video/StackTests.cs
index 3e0cbaf0c..3630a07e4 100644
--- a/tests/Jellyfin.Naming.Tests/Video/StackTests.cs
+++ b/tests/Jellyfin.Naming.Tests/Video/StackTests.cs
@@ -6,8 +6,10 @@ using Xunit;
namespace Jellyfin.Naming.Tests.Video
{
- public class StackTests : BaseVideoTest
+ public class StackTests
{
+ private readonly NamingOptions _namingOptions = new NamingOptions();
+
[Fact]
public void TestSimpleStack()
{
@@ -446,7 +448,7 @@ namespace Jellyfin.Naming.Tests.Video
private StackResolver GetResolver()
{
- return new StackResolver(new NamingOptions());
+ return new StackResolver(_namingOptions);
}
}
}
diff --git a/tests/Jellyfin.Naming.Tests/Video/StubTests.cs b/tests/Jellyfin.Naming.Tests/Video/StubTests.cs
index 8d5ced9a4..e31d97e2e 100644
--- a/tests/Jellyfin.Naming.Tests/Video/StubTests.cs
+++ b/tests/Jellyfin.Naming.Tests/Video/StubTests.cs
@@ -4,8 +4,10 @@ using Xunit;
namespace Jellyfin.Naming.Tests.Video
{
- public class StubTests : BaseVideoTest
+ public class StubTests
{
+ private readonly NamingOptions _namingOptions = new NamingOptions();
+
[Fact]
public void TestStubs()
{
@@ -27,16 +29,14 @@ namespace Jellyfin.Naming.Tests.Video
public void TestStubName()
{
var result =
- GetParser().ResolveFile(@"C:/Users/media/Desktop/Video Test/Movies/Oblivion/Oblivion.dvd.disc");
+ new VideoResolver(_namingOptions).ResolveFile(@"C:/Users/media/Desktop/Video Test/Movies/Oblivion/Oblivion.dvd.disc");
Assert.Equal("Oblivion", result.Name);
}
private void Test(string path, bool isStub, string stubType)
{
- var options = new NamingOptions();
-
- var isStubResult = StubResolver.TryResolveFile(path, options, out var stubTypeResult);
+ var isStubResult = StubResolver.TryResolveFile(path, _namingOptions, out var stubTypeResult);
Assert.Equal(isStub, isStubResult);
diff --git a/tests/Jellyfin.Naming.Tests/Video/VideoListResolverTests.cs b/tests/Jellyfin.Naming.Tests/Video/VideoListResolverTests.cs
index ef8a17898..566dc9f7c 100644
--- a/tests/Jellyfin.Naming.Tests/Video/VideoListResolverTests.cs
+++ b/tests/Jellyfin.Naming.Tests/Video/VideoListResolverTests.cs
@@ -8,6 +8,7 @@ namespace Jellyfin.Naming.Tests.Video
{
public class VideoListResolverTests
{
+ private readonly NamingOptions _namingOptions = new NamingOptions();
// FIXME
// [Fact]
public void TestStackAndExtras()
@@ -450,8 +451,7 @@ namespace Jellyfin.Naming.Tests.Video
private VideoListResolver GetResolver()
{
- var options = new NamingOptions();
- return new VideoListResolver(options);
+ return new VideoListResolver(_namingOptions);
}
}
}
diff --git a/tests/Jellyfin.Naming.Tests/Video/VideoResolverTests.cs b/tests/Jellyfin.Naming.Tests/Video/VideoResolverTests.cs
index 5a3ce8886..7bfe90f67 100644
--- a/tests/Jellyfin.Naming.Tests/Video/VideoResolverTests.cs
+++ b/tests/Jellyfin.Naming.Tests/Video/VideoResolverTests.cs
@@ -1,275 +1,204 @@
-using MediaBrowser.Model.Entities;
+using System.Collections;
+using System.Collections.Generic;
+using Emby.Naming.Common;
+using Emby.Naming.Video;
+using MediaBrowser.Model.Entities;
using Xunit;
namespace Jellyfin.Naming.Tests.Video
{
public class VideoResolverTests : BaseVideoTest
{
- // FIXME
- // [Fact]
- public void TestSimpleFile()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/Brave (2007)/Brave (2006).mkv");
-
- Assert.Equal(2006, result.Year);
- Assert.False(result.IsStub);
- Assert.False(result.Is3D);
- Assert.Equal("Brave", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void TestSimpleFile2()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/Bad Boys (1995)/Bad Boys (1995).mkv");
-
- Assert.Equal(1995, result.Year);
- Assert.False(result.IsStub);
- Assert.False(result.Is3D);
- Assert.Equal("Bad Boys", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void TestSimpleFileWithNumericName()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/300 (2007)/300 (2006).mkv");
-
- Assert.Equal(2006, result.Year);
- Assert.False(result.IsStub);
- Assert.False(result.Is3D);
- Assert.Equal("300", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void TestExtra()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/Brave (2007)/Brave (2006)-trailer.mkv");
-
- Assert.Equal(2006, result.Year);
- Assert.False(result.IsStub);
- Assert.False(result.Is3D);
- Assert.Equal(ExtraType.Trailer, result.ExtraType);
- Assert.Equal("Brave (2006)-trailer", result.Name);
- }
-
- // FIXME
- // [Fact]
- public void TestExtraWithNumericName()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/300 (2007)/300 (2006)-trailer.mkv");
-
- Assert.Equal(2006, result.Year);
- Assert.False(result.IsStub);
- Assert.False(result.Is3D);
- Assert.Equal("300 (2006)-trailer", result.Name);
- Assert.Equal(ExtraType.Trailer, result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void TestStubFileWithNumericName()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/300 (2007)/300 (2006).bluray.disc");
-
- Assert.Equal(2006, result.Year);
- Assert.True(result.IsStub);
- Assert.Equal("bluray", result.StubType);
- Assert.False(result.Is3D);
- Assert.Equal("300", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void TestStubFile()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/Brave (2007)/Brave (2006).bluray.disc");
-
- Assert.Equal(2006, result.Year);
- Assert.True(result.IsStub);
- Assert.Equal("bluray", result.StubType);
- Assert.False(result.Is3D);
- Assert.Equal("Brave", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void TestExtraStubWithNumericNameNotSupported()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/300 (2007)/300 (2006)-trailer.bluray.disc");
-
- Assert.Equal(2006, result.Year);
- Assert.True(result.IsStub);
- Assert.Equal("bluray", result.StubType);
- Assert.False(result.Is3D);
- Assert.Equal("300", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void TestExtraStubNotSupported()
- {
- // Using a stub for an extra is currently not supported
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/brave (2007)/brave (2006)-trailer.bluray.disc");
-
- Assert.Equal(2006, result.Year);
- Assert.True(result.IsStub);
- Assert.Equal("bluray", result.StubType);
- Assert.False(result.Is3D);
- Assert.Equal("brave", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void Test3DFileWithNumericName()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/300 (2007)/300 (2006).3d.sbs.mkv");
-
- Assert.Equal(2006, result.Year);
- Assert.False(result.IsStub);
- Assert.True(result.Is3D);
- Assert.Equal("sbs", result.Format3D);
- Assert.Equal("300", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void TestBad3DFileWithNumericName()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/300 (2007)/300 (2006).3d1.sbas.mkv");
-
- Assert.Equal(2006, result.Year);
- Assert.False(result.IsStub);
- Assert.False(result.Is3D);
- Assert.Equal("300", result.Name);
- Assert.Null(result.ExtraType);
- Assert.Null(result.Format3D);
- }
-
- // FIXME
- // [Fact]
- public void Test3DFile()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/brave (2007)/brave (2006).3d.sbs.mkv");
-
- Assert.Equal(2006, result.Year);
- Assert.False(result.IsStub);
- Assert.True(result.Is3D);
- Assert.Equal("sbs", result.Format3D);
- Assert.Equal("brave", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- [Fact]
- public void TestNameWithoutDate()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/American Psycho/American.Psycho.mkv");
-
- Assert.Null(result.Year);
- Assert.False(result.IsStub);
- Assert.False(result.Is3D);
- Assert.Null(result.Format3D);
- Assert.Equal("American.Psycho", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void TestCleanDateAndStringsSequence()
- {
- var parser = GetParser();
-
- // In this test case, running CleanDateTime first produces no date, so it will attempt to run CleanString first and then CleanDateTime again
- var result =
- parser.ResolveFile(@"/server/Movies/3.Days.to.Kill/3.Days.to.Kill.2014.720p.BluRay.x264.YIFY.mkv");
-
- Assert.Equal(2014, result.Year);
- Assert.False(result.IsStub);
- Assert.False(result.Is3D);
- Assert.Null(result.Format3D);
- Assert.Equal("3.Days.to.Kill", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- // FIXME
- // [Fact]
- public void TestCleanDateAndStringsSequence1()
- {
- var parser = GetParser();
-
- // In this test case, running CleanDateTime first produces no date, so it will attempt to run CleanString first and then CleanDateTime again
- var result =
- parser.ResolveFile(@"/server/Movies/3 days to kill (2005)/3 days to kill (2005).mkv");
-
- Assert.Equal(2005, result.Year);
- Assert.False(result.IsStub);
- Assert.False(result.Is3D);
- Assert.Null(result.Format3D);
- Assert.Equal("3 days to kill", result.Name);
- Assert.Null(result.ExtraType);
- }
-
- [Fact]
- public void TestFolderNameWithExtension()
- {
- var parser = GetParser();
-
- var result =
- parser.ResolveFile(@"/server/Movies/7 Psychos.mkv/7 Psychos.mkv");
-
- Assert.Null(result.Year);
- Assert.False(result.IsStub);
- Assert.False(result.Is3D);
- Assert.Equal("7 Psychos", result.Name);
- Assert.Null(result.ExtraType);
+ private readonly NamingOptions _namingOptions = new NamingOptions();
+
+ private class ResolveFileTestData : IEnumerable<object?[]>
+ {
+ public IEnumerator<object?[]> GetEnumerator()
+ {
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/7 Psychos.mkv/7 Psychos.mkv",
+ Container = "mkv",
+ Name = "7 Psychos"
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/3 days to kill (2005)/3 days to kill (2005).mkv",
+ Container = "mkv",
+ Name = "3 days to kill",
+ Year = 2005
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/American Psycho/American.Psycho.mkv",
+ Container = "mkv",
+ Name = "American.Psycho",
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/brave (2007)/brave (2006).3d.sbs.mkv",
+ Container = "mkv",
+ Name = "brave",
+ Year = 2006,
+ Is3D = true,
+ Format3D = "sbs",
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/300 (2007)/300 (2006).3d1.sbas.mkv",
+ Container = "mkv",
+ Name = "300",
+ Year = 2006
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/300 (2007)/300 (2006).3d.sbs.mkv",
+ Container = "mkv",
+ Name = "300",
+ Year = 2006,
+ Is3D = true,
+ Format3D = "sbs",
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/brave (2007)/brave (2006)-trailer.bluray.disc",
+ Container = "disc",
+ Name = "brave",
+ Year = 2006,
+ IsStub = true,
+ StubType = "bluray",
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/300 (2007)/300 (2006)-trailer.bluray.disc",
+ Container = "disc",
+ Name = "300",
+ Year = 2006,
+ IsStub = true,
+ StubType = "bluray",
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/Brave (2007)/Brave (2006).bluray.disc",
+ Container = "disc",
+ Name = "Brave",
+ Year = 2006,
+ IsStub = true,
+ StubType = "bluray",
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/300 (2007)/300 (2006).bluray.disc",
+ Container = "disc",
+ Name = "300",
+ Year = 2006,
+ IsStub = true,
+ StubType = "bluray",
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/300 (2007)/300 (2006)-trailer.mkv",
+ Container = "mkv",
+ Name = "300",
+ Year = 2006,
+ ExtraType = ExtraType.Trailer,
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/Brave (2007)/Brave (2006)-trailer.mkv",
+ Container = "mkv",
+ Name = "Brave",
+ Year = 2006,
+ ExtraType = ExtraType.Trailer,
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/300 (2007)/300 (2006).mkv",
+ Container = "mkv",
+ Name = "300",
+ Year = 2006
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/Bad Boys (1995)/Bad Boys (1995).mkv",
+ Container = "mkv",
+ Name = "Bad Boys",
+ Year = 1995,
+ }
+ };
+ yield return new object?[]
+ {
+ new VideoFileInfo()
+ {
+ Path = @"/server/Movies/Brave (2007)/Brave (2006).mkv",
+ Container = "mkv",
+ Name = "Brave",
+ Year = 2006,
+ }
+ };
+ }
+
+ IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
+ }
+
+ [Theory]
+ [ClassData(typeof(ResolveFileTestData))]
+ public void ResolveFile_ValidFileName_Success(VideoFileInfo? expectedResult)
+ {
+ var result = new VideoResolver(_namingOptions).ResolveFile(expectedResult.Path);
+
+ Assert.Equal(result.Path, expectedResult.Path);
+ Assert.Equal(result.Container, expectedResult.Container);
+ Assert.Equal(result.Name, expectedResult.Name);
+ Assert.Equal(result.Year, expectedResult.Year);
+ Assert.Equal(result.ExtraType, expectedResult.ExtraType);
+ Assert.Equal(result.Format3D, expectedResult.Format3D);
+ Assert.Equal(result.Is3D, expectedResult.Is3D);
+ Assert.Equal(result.IsStub, expectedResult.IsStub);
+ Assert.Equal(result.StubType, expectedResult.StubType);
+ Assert.Equal(result.IsDirectory, expectedResult.IsDirectory);
+ Assert.Equal(result.FileNameWithoutExtension, expectedResult.FileNameWithoutExtension);
}
}
}