core: port tag-list to C++

Also adds a new test, which tests merging of two tag-lists.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-05-29 17:57:48 +02:00 committed by bstoeger
parent 640ecb345b
commit f18acf6fb9
25 changed files with 195 additions and 227 deletions

View file

@ -15,29 +15,29 @@ void TestTagList::cleanupTestCase()
void TestTagList::testGetTagstringNoTags()
{
struct tag_entry *tag_list = NULL;
std::string tagstring = taglist_get_tagstring(tag_list);
tag_list tags;
std::string tagstring = taglist_get_tagstring(tags);
QVERIFY(tagstring.empty());
}
void TestTagList::testGetTagstringSingleTag()
{
struct tag_entry *tag_list = NULL;
taglist_add_tag(&tag_list, "A new tag");
std::string tagstring = taglist_get_tagstring(tag_list);
tag_list tags;
taglist_add_tag(tags, "A new tag");
std::string tagstring = taglist_get_tagstring(tags);
QCOMPARE(QString::fromStdString(tagstring), QString::fromUtf8("A new tag"));
}
void TestTagList::testGetTagstringMultipleTags()
{
struct tag_entry *tag_list = NULL;
taglist_add_tag(&tag_list, "A new tag");
taglist_add_tag(&tag_list, "A new tag 1");
taglist_add_tag(&tag_list, "A new tag 2");
taglist_add_tag(&tag_list, "A new tag 3");
taglist_add_tag(&tag_list, "A new tag 4");
taglist_add_tag(&tag_list, "A new tag 5");
std::string tagstring = taglist_get_tagstring(tag_list);
tag_list tags;
taglist_add_tag(tags, "A new tag");
taglist_add_tag(tags, "A new tag 1");
taglist_add_tag(tags, "A new tag 2");
taglist_add_tag(tags, "A new tag 3");
taglist_add_tag(tags, "A new tag 4");
taglist_add_tag(tags, "A new tag 5");
std::string tagstring = taglist_get_tagstring(tags);
QCOMPARE(QString::fromStdString(tagstring),
QString::fromUtf8(
"A new tag, "
@ -50,11 +50,11 @@ void TestTagList::testGetTagstringMultipleTags()
void TestTagList::testGetTagstringWithAnEmptyTag()
{
struct tag_entry *tag_list = NULL;
taglist_add_tag(&tag_list, "A new tag");
taglist_add_tag(&tag_list, "A new tag 1");
taglist_add_tag(&tag_list, "");
std::string tagstring = taglist_get_tagstring(tag_list);
tag_list tags;
taglist_add_tag(tags, "A new tag");
taglist_add_tag(tags, "A new tag 1");
taglist_add_tag(tags, "");
std::string tagstring = taglist_get_tagstring(tags);
QCOMPARE(QString::fromStdString(tagstring),
QString::fromUtf8(
"A new tag, "
@ -63,11 +63,40 @@ void TestTagList::testGetTagstringWithAnEmptyTag()
void TestTagList::testGetTagstringEmptyTagOnly()
{
struct tag_entry *tag_list = NULL;
taglist_add_tag(&tag_list, "");
std::string tagstring = taglist_get_tagstring(tag_list);
tag_list tags;
taglist_add_tag(tags, "");
std::string tagstring = taglist_get_tagstring(tags);
QCOMPARE(QString::fromStdString(tagstring),
QString::fromUtf8(""));
}
void TestTagList::testMergeTags()
{
tag_list tags1, tags2;
taglist_add_tag(tags1, "A new tag");
taglist_add_tag(tags1, "A new tag 6");
taglist_add_tag(tags1, "A new tag 1");
taglist_add_tag(tags1, "A new tag 2");
taglist_add_tag(tags1, "");
taglist_add_tag(tags1, "A new tag 2");
taglist_add_tag(tags1, "A new tag 3");
taglist_add_tag(tags1, "A new tag");
taglist_add_tag(tags2, "");
taglist_add_tag(tags2, "A new tag 1");
taglist_add_tag(tags2, "A new tag 4");
taglist_add_tag(tags2, "A new tag 2");
taglist_add_tag(tags2, "A new tag 5");
tag_list tags3 = taglist_merge(tags1, tags2);
std::string tagstring = taglist_get_tagstring(tags3);
QCOMPARE(QString::fromStdString(tagstring),
QString::fromUtf8(
"A new tag, "
"A new tag 1, "
"A new tag 2, "
"A new tag 3, "
"A new tag 4, "
"A new tag 5, "
"A new tag 6"));
}
QTEST_GUILESS_MAIN(TestTagList)

View file

@ -15,6 +15,7 @@ private slots:
void testGetTagstringMultipleTags();
void testGetTagstringWithAnEmptyTag();
void testGetTagstringEmptyTagOnly();
void testMergeTags();
};
#endif