mirror of
https://github.com/simon987/libscan.git
synced 2025-12-14 06:59:02 +00:00
Fix duplicate tag problem (simon987/sist2#48)
This commit is contained in:
@@ -291,6 +291,28 @@ TEST(MediaVideo, Vid3Webm) {
|
||||
cleanup(&doc, &f);
|
||||
}
|
||||
|
||||
TEST(MediaVideo, VidDuplicateTags) {
|
||||
vfile_t f;
|
||||
document_t doc;
|
||||
load_doc_file("libscan-test-files/test_files/media/vid_tags.mkv", &f, &doc);
|
||||
|
||||
parse_media(&media_ctx, &f, &doc);
|
||||
|
||||
meta_line_t *meta_content = get_meta(&doc, MetaContent);
|
||||
ASSERT_STREQ(meta_content->str_val, "he's got a point");
|
||||
ASSERT_EQ(get_meta_from(meta_content->next, MetaContent), nullptr);
|
||||
|
||||
meta_line_t *meta_title = get_meta(&doc, MetaTitle);
|
||||
ASSERT_STREQ(meta_title->str_val, "cool shit");
|
||||
ASSERT_EQ(get_meta_from(meta_title->next, MetaTitle), nullptr);
|
||||
|
||||
meta_line_t *meta_artist = get_meta(&doc, MetaArtist);
|
||||
ASSERT_STREQ(meta_artist->str_val, "psychicpebbles");
|
||||
ASSERT_EQ(get_meta_from(meta_artist->next, MetaArtist), nullptr);
|
||||
|
||||
cleanup(&doc, &f);
|
||||
}
|
||||
|
||||
//TODO: test music file with embedded cover art
|
||||
|
||||
TEST(MediaAudio, MusicMp3) {
|
||||
|
||||
@@ -73,7 +73,10 @@ void load_mem(void *mem, size_t size, vfile_t *f) {
|
||||
}
|
||||
|
||||
meta_line_t *get_meta(document_t *doc, metakey key) {
|
||||
meta_line_t *meta = doc->meta_head;
|
||||
return get_meta_from(doc->meta_head, key);
|
||||
}
|
||||
|
||||
meta_line_t *get_meta_from(meta_line_t *meta, metakey key) {
|
||||
while (meta != nullptr) {
|
||||
if (meta->key == key) {
|
||||
return meta;
|
||||
|
||||
@@ -23,6 +23,8 @@ static void noop_store(char* key, size_t key_len, char *value, size_t value_len)
|
||||
|
||||
meta_line_t *get_meta(document_t *doc, metakey key);
|
||||
|
||||
meta_line_t *get_meta_from(meta_line_t *meta, metakey key);
|
||||
|
||||
|
||||
#define CLOSE_FILE(f) if (f.close != NULL) {f.close(&f);};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user