From 0b830061e02de3dda6fa587611669890aed64dfc Mon Sep 17 00:00:00 2001 From: emeric Date: Sat, 7 Sep 2024 09:48:44 +0200 Subject: [PATCH] Added some unit tests about artist parsing, ref #491 --- src/libs/metadata/test/Parser.cpp | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/libs/metadata/test/Parser.cpp b/src/libs/metadata/test/Parser.cpp index 986f819c..06c8c1a2 100644 --- a/src/libs/metadata/test/Parser.cpp +++ b/src/libs/metadata/test/Parser.cpp @@ -336,4 +336,45 @@ namespace lms::metadata EXPECT_EQ(track->artists[1].name, "Artist2"); EXPECT_EQ(track->artistDisplayName, "Artist1, Artist2"); // reconstruct artist display name since multiple entries are found and nothing is set in artist } + + TEST(Parser, multipleArtistsInArtistsButNotAllMBIDs) + { + const TestTagReader testTags{ + { + { TagType::Artist, { "Artist1 & Artist2" } }, + { TagType::Artists, { "Artist1", "Artist2" } }, + { TagType::MusicBrainzArtistID, { "dd2180a2-a350-4012-b332-5d66102fa2c6" } }, // only one => no mbid will be added + } + }; + + std::unique_ptr track{ Parser{}.parse(testTags) }; + + ASSERT_EQ(track->artists.size(), 2); + EXPECT_EQ(track->artists[0].name, "Artist1"); + EXPECT_EQ(track->artists[0].mbid, std::nullopt); + EXPECT_EQ(track->artists[1].name, "Artist2"); + EXPECT_EQ(track->artists[2].mbid, std::nullopt); + EXPECT_EQ(track->artistDisplayName, "Artist1 & Artist2"); + } + + TEST(Parser, multipleArtistsInArtistsButNotAllMBIDs_customDelimiters) + { + const TestTagReader testTags{ + { + { TagType::Artist, { "Artist1 / Artist2" } }, + { TagType::MusicBrainzArtistID, { "dd2180a2-a350-4012-b332-5d66102fa2c6" } }, // only one => no mbid will be added + } + }; + + Parser parser; + static_cast(parser).setArtistTagDelimiters(std::vector{ " / " }); + std::unique_ptr track{ parser.parse(testTags) }; + + ASSERT_EQ(track->artists.size(), 2); + EXPECT_EQ(track->artists[0].name, "Artist1"); + EXPECT_EQ(track->artists[0].mbid, std::nullopt); + EXPECT_EQ(track->artists[1].name, "Artist2"); + EXPECT_EQ(track->artists[2].mbid, std::nullopt); + EXPECT_EQ(track->artistDisplayName, "Artist1, Artist2"); // reconstruct the artist display name + } } // namespace lms::metadata