Skip to content

Commit 57421ba

Browse files
davemar-bbcrsjbailey
authored andcommitted
Added some tests for tagList.
1 parent 3a464aa commit 57421ba

File tree

3 files changed

+97
-0
lines changed

3 files changed

+97
-0
lines changed

tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ add_adm_test("screen_edge_lock_tests")
7272
add_adm_test("speaker_position_tests")
7373
add_adm_test("type_descriptor_tests")
7474
add_adm_test("version_tests")
75+
add_adm_test("tag_list_tests")
7576
add_adm_test("xml_audio_block_format_objects_tests")
7677
add_adm_test("xml_loudness_metadata_tests")
7778
add_adm_test("xml_parser_audio_block_format_direct_speakers_tests")

tests/tag_list_tests.cpp

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#include <catch2/catch.hpp>
2+
#include "helper/parameter_checks.hpp"
3+
#include "adm/document.hpp"
4+
#include "adm/parse.hpp"
5+
#include "adm/write.hpp"
6+
#include "helper/file_comparator.hpp"
7+
#include "adm/elements/tag_list.hpp"
8+
9+
#include <iostream>
10+
11+
using namespace adm;
12+
using namespace adm_test;
13+
14+
TEST_CASE("Tag parameters") {
15+
TTag tag{
16+
TTagValue("value")
17+
};
18+
19+
check_optional_param<TTagClass>(tag,
20+
canBeSetTo(TTagClass{"class2"}));
21+
check_required_param<TTagValue>(tag,
22+
hasDefaultOf(TTagValue{"value"}),
23+
canBeSetTo(TTagValue{"value2"}));
24+
}
25+
26+
TEST_CASE("TagGroup parameters") {
27+
TagGroup tagGroup;
28+
TTag tag{
29+
TTagClass("class"),
30+
TTagValue("value")
31+
};
32+
33+
check_vector_param<TTags>(tagGroup, canBeSetTo(TTags{tag}));
34+
}
35+
36+
TEST_CASE("TagList parameters") {
37+
TTag tag{
38+
TTagClass("class"),
39+
TTagValue("value")
40+
};
41+
42+
TagGroup tagGroup;
43+
tagGroup.add(tag);
44+
TagList tagList;
45+
46+
check_vector_param<TagGroups>(tagList, canBeSetTo(TagGroups{tagGroup}));
47+
}
48+
49+
TEST_CASE("adm xml/taglist") {
50+
auto doc = parseXml("tag_list.accepted.xml");
51+
auto tag_list = doc->getElement<TagList>();
52+
auto tag_groups = tag_list->get<TagGroups>();
53+
REQUIRE(tag_groups.size() == 1);
54+
55+
auto tag_group = tag_groups.at(0);
56+
auto tags = tag_group.get<TTags>();
57+
auto tag = tags.at(0);
58+
CHECK(tag.get<TTagClass>() == "class1");
59+
CHECK(tag.get<TTagValue>() == "value1");
60+
61+
std::stringstream xml;
62+
writeXml(xml, doc);
63+
CHECK_THAT(xml.str(), EqualsXmlFile("tag_list"));
64+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<ebuCoreMain xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="urn:ebu:metadata-schema:ebuCore_2014" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schema="EBU_CORE_20140201.xsd" xml:lang="en">
3+
<coreMetadata>
4+
<format>
5+
<audioFormatExtended>
6+
<tagList>
7+
<tagGroup>
8+
<tag class="class1">value1</tag>
9+
<audioProgrammeIDRef>APR_1001</audioProgrammeIDRef>
10+
<audioContentIDRef>ACO_1001</audioContentIDRef>
11+
<audioObjectIDRef>AO_1001</audioObjectIDRef>
12+
</tagGroup>
13+
</tagList>
14+
<audioProgramme audioProgrammeID="APR_1001" audioProgrammeName="Programme1">
15+
<audioContentIDRef>ACO_1001</audioContentIDRef>
16+
</audioProgramme>
17+
<audioContent audioContentID="ACO_1001" audioContentName="Content1">
18+
<audioObjectIDRef>AO_1001</audioObjectIDRef>
19+
</audioContent>
20+
<audioObject audioObjectID="AO_1001" audioObjectName="Object1">
21+
<audioPackFormatIDRef>AP_00010001</audioPackFormatIDRef>
22+
<audioTrackUIDRef>ATU_00000001</audioTrackUIDRef>
23+
</audioObject>
24+
<audioTrackUID UID="ATU_00000001">
25+
<audioTrackFormatIDRef>AT_00010003_01</audioTrackFormatIDRef>
26+
<audioPackFormatIDRef>AP_00010001</audioPackFormatIDRef>
27+
</audioTrackUID>
28+
</audioFormatExtended>
29+
</format>
30+
</coreMetadata>
31+
</ebuCoreMain>
32+

0 commit comments

Comments
 (0)