From 11577b6db90f2c0eb1406b23e6c6e703e0edb8a4 Mon Sep 17 00:00:00 2001 From: ta264 Date: Fri, 7 May 2021 18:54:33 +0100 Subject: [PATCH] Fixed: Identification failing if book metadata has no authors --- .../Identification/DistanceFixture.cs | 32 +++++++++++++++++++ .../BookImport/Identification/Distance.cs | 18 +++++++++-- 2 files changed, 48 insertions(+), 2 deletions(-) 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 @@ namespace NzbDrone.Core.Test.MediaFiles.BookImport.Identification 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 @@ namespace NzbDrone.Core.MediaFiles.BookImport.Identification 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)