Added a unit test to ensure album artists are correctly split using custom delimiters

This commit is contained in:
emeric
2024-09-04 19:27:11 +02:00
parent 896c0b870a
commit d101cc9780
2 changed files with 20 additions and 6 deletions
+1 -1
View File
@@ -82,7 +82,7 @@ namespace lms::metadata
bool isDefault() const bool isDefault() const
{ {
static Medium defaultMedium; static const Medium defaultMedium;
return *this == defaultMedium; return *this == defaultMedium;
} }
}; };
+19 -5
View File
@@ -233,9 +233,12 @@ namespace lms::metadata
{ {
const TestTagReader testTags{ const TestTagReader testTags{
{ {
{ TagType::Album, { "MyAlbum" } },
{ TagType::AlbumArtist, { "AlbumArtist1 \\ AlbumArtist2" } },
{ TagType::Artist, { " This / is ; One Artist \\ Other Artist " } },
{ TagType::Genre, { "Genre1 ; Genre2" } }, { TagType::Genre, { "Genre1 ; Genre2" } },
{ TagType::Language, { " Lang1/Lang2 / Lang3" } }, { TagType::Language, { " Lang1/Lang2 / Lang3" } },
{ TagType::Artist, { " This / is ; One Artist \\ Other Artist " } },
} }
}; };
@@ -244,6 +247,10 @@ namespace lms::metadata
static_cast<IParser&>(parser).setArtistTagDelimiters(std::vector<std::string>{ " \\ ", " / " }); // The first delimiter found will be used static_cast<IParser&>(parser).setArtistTagDelimiters(std::vector<std::string>{ " \\ ", " / " }); // The first delimiter found will be used
std::unique_ptr<Track> track{ parser.parse(testTags) }; std::unique_ptr<Track> track{ parser.parse(testTags) };
ASSERT_EQ(track->artists.size(), 2);
EXPECT_EQ(track->artists[0].name, "This / is ; One Artist");
EXPECT_EQ(track->artists[1].name, "Other Artist");
EXPECT_EQ(track->artistDisplayName, "This / is ; One Artist, Other Artist"); // reconstruct artist display name since a custom delimiter is hit
ASSERT_EQ(track->genres.size(), 2); ASSERT_EQ(track->genres.size(), 2);
EXPECT_EQ(track->genres[0], "Genre1"); EXPECT_EQ(track->genres[0], "Genre1");
EXPECT_EQ(track->genres[1], "Genre2"); EXPECT_EQ(track->genres[1], "Genre2");
@@ -251,10 +258,17 @@ namespace lms::metadata
EXPECT_EQ(track->languages[0], "Lang1"); EXPECT_EQ(track->languages[0], "Lang1");
EXPECT_EQ(track->languages[1], "Lang2"); EXPECT_EQ(track->languages[1], "Lang2");
EXPECT_EQ(track->languages[2], "Lang3"); EXPECT_EQ(track->languages[2], "Lang3");
ASSERT_EQ(track->artists.size(), 2);
EXPECT_EQ(track->artists[0].name, "This / is ; One Artist"); // Medium
EXPECT_EQ(track->artists[1].name, "Other Artist"); ASSERT_TRUE(track->medium.has_value());
EXPECT_EQ(track->artistDisplayName, "This / is ; One Artist, Other Artist"); // reconstruct artist display name since a custom delimiter is hit
// Release
ASSERT_TRUE(track->medium->release.has_value());
EXPECT_EQ(track->medium->release->name, "MyAlbum");
EXPECT_EQ(track->medium->release->artists[0].name, "AlbumArtist1");
EXPECT_EQ(track->medium->release->artists[1].name, "AlbumArtist2");
EXPECT_EQ(track->medium->release->artistDisplayName, "AlbumArtist1 \\ AlbumArtist2"); // reconstruct artist display name since a custom delimiter is hit
} }
TEST(Parser, noArtistInArtist) TEST(Parser, noArtistInArtist)