diff --git a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Identification/DistanceFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Identification/DistanceFixture.cs index b1b78d0a4..f1e98bf8e 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Identification/DistanceFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Identification/DistanceFixture.cs @@ -131,6 +131,38 @@ public void test_add_string_both_none() dist.Penalties.Should().BeEquivalentTo(new Dictionary> { { "string", new List { 0.0 } } }); } + [Test] + public void test_add_string_empty_values_valid_target() + { + var dist = new Distance(); + dist.AddString("string", new List(), "target"); + dist.Penalties.Should().BeEquivalentTo(new Dictionary> { { "string", new List { 1.0 } } }); + } + + [Test] + public void test_add_string_empty_values_empty_target() + { + var dist = new Distance(); + dist.AddString("string", new List(), string.Empty); + dist.Penalties.Should().BeEquivalentTo(new Dictionary> { { "string", new List { 0.0 } } }); + } + + [Test] + public void test_add_string_empty_options_valid_value() + { + var dist = new Distance(); + dist.AddString("string", "value", new List()); + dist.Penalties.Should().BeEquivalentTo(new Dictionary> { { "string", new List { 1.0 } } }); + } + + [Test] + public void test_add_string_empty_options_empty_value() + { + var dist = new Distance(); + dist.AddString("string", string.Empty, new List()); + dist.Penalties.Should().BeEquivalentTo(new Dictionary> { { "string", new List { 0.0 } } }); + } + [Test] public void test_distance() { diff --git a/src/NzbDrone.Core/MediaFiles/BookImport/Identification/Distance.cs b/src/NzbDrone.Core/MediaFiles/BookImport/Identification/Distance.cs index b2a13b6da..e40d84b90 100644 --- a/src/NzbDrone.Core/MediaFiles/BookImport/Identification/Distance.cs +++ b/src/NzbDrone.Core/MediaFiles/BookImport/Identification/Distance.cs @@ -151,12 +151,26 @@ public void AddString(string key, string value, string target) public void AddString(string key, string value, List options) { - Add(key, options.Min(x => StringScore(value, x))); + if (!options.Any()) + { + Add(key, StringScore(value, string.Empty)); + } + else + { + Add(key, options.Min(x => StringScore(value, x))); + } } public void AddString(string key, List values, string target) { - Add(key, values.Min(v => StringScore(v, target))); + if (!values.Any()) + { + Add(key, StringScore(string.Empty, target)); + } + else + { + Add(key, values.Min(v => StringScore(v, target))); + } } public void AddBool(string key, bool expr)