mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-06-01 04:34:26 -04:00
Add more speed and more tests
This commit is contained in:
parent
3513f5a84b
commit
593b2fd359
@ -28,21 +28,26 @@ namespace Emby.Server.Implementations.Library
|
|||||||
throw new ArgumentException("String can't be empty.", nameof(attribute));
|
throw new ArgumentException("String can't be empty.", nameof(attribute));
|
||||||
}
|
}
|
||||||
|
|
||||||
var openBracketIndex = str.IndexOf('[');
|
|
||||||
var attributeIndex = str.IndexOf(attribute);
|
var attributeIndex = str.IndexOf(attribute);
|
||||||
var closingBracketIndex = str.IndexOf(']');
|
|
||||||
while (openBracketIndex < attributeIndex && attributeIndex < closingBracketIndex)
|
// Must be at least 3 characters after the attribute =, ], any character.
|
||||||
|
var maxIndex = str.Length - attribute.Length - 3;
|
||||||
|
while (attributeIndex > -1 && attributeIndex < maxIndex)
|
||||||
{
|
{
|
||||||
if (openBracketIndex + 1 == attributeIndex
|
var attributeEnd = attributeIndex + attribute.Length;
|
||||||
&& str[attributeIndex + attribute.Length] == '=')
|
if (attributeIndex > 0
|
||||||
|
&& str[attributeIndex - 1] == '['
|
||||||
|
&& str[attributeEnd] == '=')
|
||||||
{
|
{
|
||||||
return str[(attributeIndex + attribute.Length + 1)..closingBracketIndex].Trim().ToString();
|
var closingIndex = str[attributeEnd..].IndexOf(']');
|
||||||
|
if (closingIndex != -1)
|
||||||
|
{
|
||||||
|
return str[(attributeEnd + 1)..(attributeEnd + closingIndex)].Trim().ToString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
str = str[(closingBracketIndex + 1)..];
|
str = str[attributeEnd..];
|
||||||
openBracketIndex = str.IndexOf('[');
|
|
||||||
attributeIndex = str.IndexOf(attribute);
|
attributeIndex = str.IndexOf(attribute);
|
||||||
closingBracketIndex = str.IndexOf(']');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// for imdbid we also accept pattern matching
|
// for imdbid we also accept pattern matching
|
||||||
|
@ -14,6 +14,14 @@ namespace Jellyfin.Server.Implementations.Tests.Library
|
|||||||
[InlineData("Superman: Red Son [imdbid1=tt11111111][imdbid=tt10985510]", "imdbid", "tt10985510")]
|
[InlineData("Superman: Red Son [imdbid1=tt11111111][imdbid=tt10985510]", "imdbid", "tt10985510")]
|
||||||
[InlineData("Superman: Red Son [tmdbid=618355][imdbid=tt10985510]", "imdbid", "tt10985510")]
|
[InlineData("Superman: Red Son [tmdbid=618355][imdbid=tt10985510]", "imdbid", "tt10985510")]
|
||||||
[InlineData("Superman: Red Son [tmdbid=618355][imdbid=tt10985510]", "tmdbid", "618355")]
|
[InlineData("Superman: Red Son [tmdbid=618355][imdbid=tt10985510]", "tmdbid", "618355")]
|
||||||
|
[InlineData("[tmdbid=618355]", "tmdbid", "618355")]
|
||||||
|
[InlineData("tmdbid=618355][tmdbid=618355]", "tmdbid", "618355")]
|
||||||
|
[InlineData("[tmdbid=618355]tmdbid=618355]", "tmdbid", "618355")]
|
||||||
|
[InlineData("tmdbid=618355]", "tmdbid", null)]
|
||||||
|
[InlineData("[tmdbid=618355", "tmdbid", null)]
|
||||||
|
[InlineData("tmdbid=618355", "tmdbid", null)]
|
||||||
|
[InlineData("tmdbid=", "tmdbid", null)]
|
||||||
|
[InlineData("tmdbid", "tmdbid", null)]
|
||||||
public void GetAttributeValue_ValidArgs_Correct(string input, string attribute, string? expectedResult)
|
public void GetAttributeValue_ValidArgs_Correct(string input, string attribute, string? expectedResult)
|
||||||
{
|
{
|
||||||
Assert.Equal(expectedResult, PathExtensions.GetAttributeValue(input, attribute));
|
Assert.Equal(expectedResult, PathExtensions.GetAttributeValue(input, attribute));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user