Browse Source

Merge pull request #2950 from Bond-009/videoresolver

Fix VideoResolver and tests
Anthony Lavado 5 years ago
parent
commit
0e11646107

+ 3 - 3
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))
+                    && TryCleanString(name, out ReadOnlySpan<char> newName))
                 {
                     name = newName.ToString();
                 }
-
-                year = cleanDateTimeResult.Year;
             }
 
             return new VideoFileInfo

+ 0 - 1
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

+ 0 - 13
tests/Jellyfin.Naming.Tests/Video/BaseVideoTest.cs

@@ -1,13 +0,0 @@
-using Emby.Naming.Common;
-using Emby.Naming.Video;
-
-namespace Jellyfin.Naming.Tests.Video
-{
-    public abstract class BaseVideoTest
-    {
-        private readonly NamingOptions _namingOptions = new NamingOptions();
-
-        protected VideoResolver GetParser()
-            => new VideoResolver(_namingOptions);
-    }
-}

+ 1 - 0
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);

+ 1 - 1
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();
 

+ 29 - 30
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);
 

+ 3 - 2
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);
         }
     }
 }

+ 4 - 2
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);
         }
     }
 }

+ 5 - 5
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);
 

+ 2 - 2
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);
         }
     }
 }

+ 192 - 267
tests/Jellyfin.Naming.Tests/Video/VideoResolverTests.cs

@@ -1,275 +1,200 @@
-using MediaBrowser.Model.Entities;
+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
+    public class VideoResolverTests
     {
-        // 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();
+
+        public static IEnumerable<object[]> GetResolveFileTestData()
+        {
+            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,
+                }
+            };
+        }
+
+
+        [Theory]
+        [MemberData(nameof(GetResolveFileTestData))]
+        public void ResolveFile_ValidFileName_Success(VideoFileInfo expectedResult)
+        {
+            var result = new VideoResolver(_namingOptions).ResolveFile(expectedResult.Path);
+
+            Assert.NotNull(result);
+            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);
         }
     }
 }