parent
17535bd8d6
commit
cdf8b0bc8f
@ -0,0 +1,95 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using FluentAssertions;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Core.MediaFiles.BookImport.Identification;
|
||||||
|
using NzbDrone.Test.Common;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.MediaFiles.BookImport.Identification
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class DistanceCalculatorFixture : TestBase
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void should_reverse_single_reversed_author()
|
||||||
|
{
|
||||||
|
var input = new List<string> { "Last, First" };
|
||||||
|
var authors = DistanceCalculator.GetAuthorVariants(input);
|
||||||
|
|
||||||
|
authors.Should().Contain("First Last");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_reverse_two_reversed_author()
|
||||||
|
{
|
||||||
|
var input = new List<string>
|
||||||
|
{
|
||||||
|
"Last, First",
|
||||||
|
"Last2, First2"
|
||||||
|
};
|
||||||
|
|
||||||
|
var authors = DistanceCalculator.GetAuthorVariants(input);
|
||||||
|
|
||||||
|
authors.Should().HaveCount(4);
|
||||||
|
authors.Should().Contain("First Last");
|
||||||
|
authors.Should().Contain("First2 Last2");
|
||||||
|
authors.Should().Contain("Last, First");
|
||||||
|
authors.Should().Contain("Last2, First2");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_not_reverse_single_author()
|
||||||
|
{
|
||||||
|
var input = new List<string> { "First Last" };
|
||||||
|
var authors = DistanceCalculator.GetAuthorVariants(input);
|
||||||
|
|
||||||
|
authors.Should().HaveCount(1);
|
||||||
|
authors.Should().Contain("First Last");
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestCase("First1 Last1, First2 Last2", "First1 Last1", "First2 Last2")]
|
||||||
|
[TestCase("First1 Last1; First2 Last2", "First1 Last1", "First2 Last2")]
|
||||||
|
[TestCase("First1 Last1 & First2 Last2", "First1 Last1", "First2 Last2")]
|
||||||
|
[TestCase("First1 Last1 / First2 Last2", "First1 Last1", "First2 Last2")]
|
||||||
|
[TestCase("First1 Last1 and First2 Last2", "First1 Last1", "First2 Last2")]
|
||||||
|
public void should_split_concatenated_author(string inputString, string first, string second)
|
||||||
|
{
|
||||||
|
var input = new List<string> { inputString };
|
||||||
|
var authors = DistanceCalculator.GetAuthorVariants(input);
|
||||||
|
|
||||||
|
authors.Should().Contain(inputString);
|
||||||
|
authors.Should().Contain(first);
|
||||||
|
authors.Should().Contain(second);
|
||||||
|
authors.Should().HaveCount(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_split_concatenated_with_trailing_and()
|
||||||
|
{
|
||||||
|
var inputString = "First Last, First2 Last2 & First3 Last3";
|
||||||
|
var input = new List<string> { inputString };
|
||||||
|
var authors = DistanceCalculator.GetAuthorVariants(input);
|
||||||
|
|
||||||
|
authors.Should().Contain(inputString);
|
||||||
|
authors.Should().Contain("First Last");
|
||||||
|
authors.Should().Contain("First2 Last2");
|
||||||
|
authors.Should().Contain("First3 Last3");
|
||||||
|
authors.Should().HaveCount(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_not_split_if_multiple_input()
|
||||||
|
{
|
||||||
|
var input = new List<string>
|
||||||
|
{
|
||||||
|
"First Last",
|
||||||
|
"Second Third, Fourth Fifth"
|
||||||
|
};
|
||||||
|
|
||||||
|
var authors = DistanceCalculator.GetAuthorVariants(input);
|
||||||
|
|
||||||
|
authors.Should().HaveCount(2);
|
||||||
|
authors.Should().Contain("First Last");
|
||||||
|
authors.Should().Contain("Second Third, Fourth Fifth");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue