aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.editorconfig17
-rw-r--r--Emby.Naming/Video/VideoResolver.cs6
-rw-r--r--Emby.Server.Implementations/ConfigurationOptions.cs1
-rw-r--r--Emby.Server.Implementations/Localization/Core/hr.json12
-rw-r--r--Emby.Server.Implementations/Localization/Core/nl.json6
-rw-r--r--Emby.Server.Implementations/Localization/Core/sl-SI.json23
-rw-r--r--MediaBrowser.sln5
-rw-r--r--tests/Jellyfin.Naming.Tests/Video/BaseVideoTest.cs13
-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.cs459
16 files changed, 285 insertions, 344 deletions
diff --git a/.editorconfig b/.editorconfig
index dc9aaa3ed..b84e563ef 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -13,7 +13,7 @@ charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf
-max_line_length = null
+max_line_length = off
# YAML indentation
[*.{yml,yaml}]
@@ -22,6 +22,7 @@ indent_size = 2
# XML indentation
[*.{csproj,xml}]
indent_size = 2
+
###############################
# .NET Coding Conventions #
###############################
@@ -51,11 +52,12 @@ dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent
-dotnet_prefer_inferred_tuple_names = true:suggestion
-dotnet_prefer_inferred_anonymous_type_member_names = true:suggestion
+dotnet_style_prefer_inferred_tuple_names = true:suggestion
+dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
+
###############################
# Naming Conventions #
###############################
@@ -67,7 +69,7 @@ dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.symbols = non
dotnet_naming_rule.non_private_static_fields_should_be_pascal_case.style = non_private_static_field_style
dotnet_naming_symbols.non_private_static_fields.applicable_kinds = field
-dotnet_naming_symbols.non_private_static_fields.applicable_accessibilities = public, protected, internal, protected internal, private protected
+dotnet_naming_symbols.non_private_static_fields.applicable_accessibilities = public, protected, internal, protected_internal, private_protected
dotnet_naming_symbols.non_private_static_fields.required_modifiers = static
dotnet_naming_style.non_private_static_field_style.capitalization = pascal_case
@@ -159,6 +161,7 @@ csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_pattern_local_over_anonymous_function = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
+
###############################
# C# Formatting Rules #
###############################
@@ -189,9 +192,3 @@ csharp_space_between_method_call_empty_parameter_list_parentheses = false
# Wrapping preferences
csharp_preserve_single_line_statements = true
csharp_preserve_single_line_blocks = true
-###############################
-# VB Coding Conventions #
-###############################
-[*.vb]
-# Modifier preferences
-visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion
diff --git a/Emby.Naming/Video/VideoResolver.cs b/Emby.Naming/Video/VideoResolver.cs
index 0b75a8cce..b4aee614b 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))
+ && TryCleanString(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/Emby.Server.Implementations/Localization/Core/hr.json b/Emby.Server.Implementations/Localization/Core/hr.json
index 6947178d7..c169a35e7 100644
--- a/Emby.Server.Implementations/Localization/Core/hr.json
+++ b/Emby.Server.Implementations/Localization/Core/hr.json
@@ -30,7 +30,7 @@
"Inherit": "Naslijedi",
"ItemAddedWithName": "{0} je dodano u biblioteku",
"ItemRemovedWithName": "{0} je uklonjen iz biblioteke",
- "LabelIpAddressValue": "Ip adresa: {0}",
+ "LabelIpAddressValue": "IP adresa: {0}",
"LabelRunningTimeValue": "Vrijeme rada: {0}",
"Latest": "Najnovije",
"MessageApplicationUpdated": "Jellyfin Server je ažuriran",
@@ -92,5 +92,13 @@
"UserStoppedPlayingItemWithValues": "{0} je zaustavio {1}",
"ValueHasBeenAddedToLibrary": "{0} has been added to your media library",
"ValueSpecialEpisodeName": "Specijal - {0}",
- "VersionNumber": "Verzija {0}"
+ "VersionNumber": "Verzija {0}",
+ "TaskRefreshLibraryDescription": "Skenira vašu medijsku knjižnicu sa novim datotekama i osvježuje metapodatke.",
+ "TaskRefreshLibrary": "Skeniraj medijsku knjižnicu",
+ "TaskRefreshChapterImagesDescription": "Stvara sličice za videozapise koji imaju poglavlja.",
+ "TaskRefreshChapterImages": "Raspakiraj slike poglavlja",
+ "TaskCleanCacheDescription": "Briše priručne datoteke nepotrebne za sistem.",
+ "TaskCleanCache": "Očisti priručnu memoriju",
+ "TasksApplicationCategory": "Aplikacija",
+ "TasksMaintenanceCategory": "Održavanje"
}
diff --git a/Emby.Server.Implementations/Localization/Core/nl.json b/Emby.Server.Implementations/Localization/Core/nl.json
index baa12e98e..41c74d54d 100644
--- a/Emby.Server.Implementations/Localization/Core/nl.json
+++ b/Emby.Server.Implementations/Localization/Core/nl.json
@@ -5,7 +5,7 @@
"Artists": "Artiesten",
"AuthenticationSucceededWithUserName": "{0} is succesvol geverifieerd",
"Books": "Boeken",
- "CameraImageUploadedFrom": "Er is een nieuwe afbeelding toegevoegd via {0}",
+ "CameraImageUploadedFrom": "Er is een nieuwe camera afbeelding toegevoegd via {0}",
"Channels": "Kanalen",
"ChapterNameValue": "Hoofdstuk {0}",
"Collections": "Verzamelingen",
@@ -26,7 +26,7 @@
"HeaderLiveTV": "Live TV",
"HeaderNextUp": "Volgende",
"HeaderRecordingGroups": "Opnamegroepen",
- "HomeVideos": "Start video's",
+ "HomeVideos": "Home video's",
"Inherit": "Overerven",
"ItemAddedWithName": "{0} is toegevoegd aan de bibliotheek",
"ItemRemovedWithName": "{0} is verwijderd uit de bibliotheek",
@@ -50,7 +50,7 @@
"NotificationOptionAudioPlayback": "Muziek gestart",
"NotificationOptionAudioPlaybackStopped": "Muziek gestopt",
"NotificationOptionCameraImageUploaded": "Camera-afbeelding geüpload",
- "NotificationOptionInstallationFailed": "Installatie mislukking",
+ "NotificationOptionInstallationFailed": "Installatie mislukt",
"NotificationOptionNewLibraryContent": "Nieuwe content toegevoegd",
"NotificationOptionPluginError": "Plug-in fout",
"NotificationOptionPluginInstalled": "Plug-in geïnstalleerd",
diff --git a/Emby.Server.Implementations/Localization/Core/sl-SI.json b/Emby.Server.Implementations/Localization/Core/sl-SI.json
index b60dd33bd..60c58d472 100644
--- a/Emby.Server.Implementations/Localization/Core/sl-SI.json
+++ b/Emby.Server.Implementations/Localization/Core/sl-SI.json
@@ -92,5 +92,26 @@
"UserStoppedPlayingItemWithValues": "{0} je nehal predvajati {1} na {2}",
"ValueHasBeenAddedToLibrary": "{0} je bil dodan vaši knjižnici",
"ValueSpecialEpisodeName": "Poseben - {0}",
- "VersionNumber": "Različica {0}"
+ "VersionNumber": "Različica {0}",
+ "TaskDownloadMissingSubtitles": "Prenesi manjkajoče podnapise",
+ "TaskRefreshChannelsDescription": "Osveži podatke spletnih kanalov.",
+ "TaskRefreshChannels": "Osveži kanale",
+ "TaskCleanTranscodeDescription": "Izbriše več kot dan stare datoteke prekodiranja.",
+ "TaskCleanTranscode": "Počisti mapo prekodiranja",
+ "TaskUpdatePluginsDescription": "Prenese in namesti posodobitve za dodatke, ki imajo omogočene samodejne posodobitve.",
+ "TaskUpdatePlugins": "Posodobi dodatke",
+ "TaskRefreshPeopleDescription": "Osveži metapodatke za igralce in režiserje v vaši knjižnici.",
+ "TaskRefreshPeople": "Osveži osebe",
+ "TaskCleanLogsDescription": "Izbriše dnevniške datoteke starejše od {0} dni.",
+ "TaskCleanLogs": "Počisti mapo dnevnika",
+ "TaskRefreshLibraryDescription": "Preišče vašo knjižnico za nove datoteke in osveži metapodatke.",
+ "TaskRefreshLibrary": "Preišči knjižnico predstavnosti",
+ "TaskRefreshChapterImagesDescription": "Ustvari sličice za poglavja videoposnetkov.",
+ "TaskRefreshChapterImages": "Izvleči slike poglavij",
+ "TaskCleanCacheDescription": "Izbriše predpomnjene datoteke, ki niso več potrebne.",
+ "TaskCleanCache": "Počisti mapo predpomnilnika",
+ "TasksChannelsCategory": "Spletni kanali",
+ "TasksApplicationCategory": "Aplikacija",
+ "TasksLibraryCategory": "Knjižnica",
+ "TasksMaintenanceCategory": "Vzdrževanje"
}
diff --git a/MediaBrowser.sln b/MediaBrowser.sln
index 18e578fb6..6a22fd02f 100644
--- a/MediaBrowser.sln
+++ b/MediaBrowser.sln
@@ -2,6 +2,8 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26730.3
MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Jellyfin.Server", "Jellyfin.Server\Jellyfin.Server.csproj", "{07E39F42-A2C6-4B32-AF8C-725F957A73FF}"
+EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MediaBrowser.Controller", "MediaBrowser.Controller\MediaBrowser.Controller.csproj", "{17E1F4E6-8ABD-4FE5-9ECF-43D4B6087BA2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MediaBrowser.Api", "MediaBrowser.Api\MediaBrowser.Api.csproj", "{4FD51AC5-2C16-4308-A993-C3A84F3B4582}"
@@ -36,11 +38,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Emby.Naming", "Emby.Naming\
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MediaBrowser.MediaEncoding", "MediaBrowser.MediaEncoding\MediaBrowser.MediaEncoding.csproj", "{960295EE-4AF4-4440-A525-B4C295B01A61}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Jellyfin.Server", "Jellyfin.Server\Jellyfin.Server.csproj", "{07E39F42-A2C6-4B32-AF8C-725F957A73FF}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{41093F42-C7CC-4D07-956B-6182CBEDE2EC}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
+ jellyfin.ruleset = jellyfin.ruleset
SharedVersion.cs = SharedVersion.cs
EndProjectSection
EndProject
diff --git a/tests/Jellyfin.Naming.Tests/Video/BaseVideoTest.cs b/tests/Jellyfin.Naming.Tests/Video/BaseVideoTest.cs
deleted file mode 100644
index 0c2978aca..000000000
--- a/tests/Jellyfin.Naming.Tests/Video/BaseVideoTest.cs
+++ /dev/null
@@ -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);
- }
-}
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..d2b3d6ff0 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..114735cee 100644
--- a/tests/Jellyfin.Naming.Tests/Video/VideoResolverTests.cs
+++ b/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);
}
}
}