You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidarr/src/NzbDrone.Common.Test/LevenshteinDistanceFixture.cs

63 lines
2.2 KiB

using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Common.Extensions;
using NzbDrone.Test.Common;
namespace NzbDrone.Common.Test
{
[TestFixture]
public class LevenshteinDistanceFixture : TestBase
{
[TestCase("", "", 0)]
[TestCase("abc", "abc", 0)]
[TestCase("abc", "abcd", 1)]
[TestCase("abcd", "abc", 1)]
[TestCase("abc", "abd", 1)]
[TestCase("abc", "adc", 1)]
[TestCase("abcdefgh", "abcghdef", 4)]
[TestCase("a.b.c.", "abc", 3)]
[TestCase("Agents Of SHIELD", "Marvel's Agents Of S.H.I.E.L.D.", 15)]
[TestCase("Agents of cracked", "Agents of shield", 6)]
[TestCase("ABCxxx", "ABC1xx", 1)]
[TestCase("ABC1xx", "ABCxxx", 1)]
public void LevenshteinDistance(string text, string other, int expected)
{
text.LevenshteinDistance(other).Should().Be(expected);
}
[TestCase("", "", 0)]
[TestCase("abc", "abc", 0)]
[TestCase("abc", "abcd", 1)]
[TestCase("abcd", "abc", 3)]
[TestCase("abc", "abd", 3)]
[TestCase("abc", "adc", 3)]
[TestCase("abcdefgh", "abcghdef", 8)]
[TestCase("a.b.c.", "abc", 0)]
[TestCase("Agents of shield", "Marvel's Agents Of S.H.I.E.L.D.", 9)]
[TestCase("Agents of shield", "Agents of cracked", 14)]
[TestCase("Agents of shield", "the shield", 24)]
[TestCase("ABCxxx", "ABC1xx", 3)]
[TestCase("ABC1xx", "ABCxxx", 3)]
public void LevenshteinDistanceClean(string text, string other, int expected)
{
text.ToLower().LevenshteinDistanceClean(other.ToLower()).Should().Be(expected);
}
[TestCase("hello", "hello")]
[TestCase("hello", "bye")]
[TestCase("a longer string", "a different long string")]
public void FuzzyMatchSymmetric(string a, string b)
{
a.FuzzyMatch(b).Should().Be(b.FuzzyMatch(a));
}
[TestCase("", "", 0)]
[TestCase("a", "", 0)]
[TestCase("", "a", 0)]
public void FuzzyMatchEmptyValuesReturnZero(string a, string b, double expected)
{
a.FuzzyMatch(b).Should().Be(expected);
}
}
}