diff --git a/tests/adm_document_tests.cpp b/tests/adm_document_tests.cpp index dee786e6..1fdd289f 100644 --- a/tests/adm_document_tests.cpp +++ b/tests/adm_document_tests.cpp @@ -4,6 +4,8 @@ #include "adm/utilities/id_assignment.hpp" #include "adm/utilities/copy.hpp" #include "adm/utilities/object_creation.hpp" +#include "adm/parse.hpp" +#include "adm/write.hpp" TEST_CASE("basic_document") { using namespace adm; @@ -629,3 +631,14 @@ TEST_CASE("remove_elements") { REQUIRE(trackUid->getReference() == nullptr); } } + +// Tests deepcopy using a modified version of the kitchen sink test material from https://qc.ebu.io/testmaterial +TEST_CASE("Copy the kitchen sink") { + auto document = parseXml("sink.xml"); + std::stringstream xml; + writeXml(xml, document); + auto documentCopy = document->deepCopy(); + std::stringstream xmlCopy; + writeXml(xmlCopy, documentCopy); + REQUIRE(xml.str() == xmlCopy.str()); +} diff --git a/tests/test_data/sink.xml b/tests/test_data/sink.xml new file mode 100644 index 00000000..48c7e8a7 --- /dev/null +++ b/tests/test_data/sink.xml @@ -0,0 +1,568 @@ + + + + + <dc:title xml:lang="en">Kitchen Sink ADM Test File</dc:title> + + + + BBC + + + + +This ADM test file is designed for testing ADM metadata handling software. It contains every parameter specified in ITU-R BS.2076-1 in some form. While it does contain some audio, these are merely to allow validiation of the metadata with the audio tracks rather than for any useful playout or listening tests. So some values such as loudness parameters and matrix values may not make sense with the corresponding audio, but are merely present to allow testing of their presence. + +The file contains 17 tracks, with tracks 7 and 8 containing two audioObjects (i.e two audioTrackUIDs) with all the other tracks containing one. +Tracks 1-3: channel-based audio (DirectSpeakers), PCM +Tracks 4-6: object-based audio (Objects), PCM +Tracks 7-9: channel-based audio (DirectSpeakers) for the first 7 seconds, PCM +Tracks 7-8: matrix-based audio (Matrix) from the 8 seconds onwards, PCM +Tracks 10-13: scene-based audio (HOA), PCM +Tracks 14-15: binaural audio (Binaural), PCM +Tracks 16-17: channel-based audio (DirectSpeakers), coded (6 channels in 2 tracks) using a trivial bit-packing codec. + +All audio is 24-bit 48kHz. + + + + + + + + + + ACO_1001 + ACO_1002 + ACO_1004 + ACO_1005 + + -23.0 + 17.5 + -3.2 + -8.9 + -15.3 + + + + + + + + ACO_1003 + ACO_1006 + ACO_1007 + ACO_1008 + + -24.0 + 16.5 + -4.2 + -9.9 + -13.3 + -23.8 + + + + + + + + + AO_1001 + AO_1002 + + -24.0 + 12.5 + -5.2 + -9.9 + -18.3 + + 0 + + + AO_1003 + + -22.0 + 18.5 + -2.2 + -12.9 + -14.3 + + 1 + + + AO_1004 + 2 + + + AO_1005 + + + AO_1006 + + + AO_1007 + + + AO_1008 + + + AO_1009 + + + + AP_00010002 + AO_1002 + ATU_00000001 + ATU_00000002 + + -20.0 + 3.0 + + + + AP_00010001 + ATU_00000003 + + -20.0 + 3.0 + + + + AP_00031001 + ATU_00000004 + ATU_00000005 + + -50.0 + 50.0 + -20.0 + 20.0 + 0.6 + 1.0 + + + + AP_00031002 + ATU_00000006 + + + AP_00011001 + ATU_00000007 + ATU_00000008 + ATU_00000009 + + + AP_00021001 + ATU_0000000a + ATU_0000000b + + + AP_00041001 + ATU_0000000c + ATU_0000000d + ATU_0000000e + ATU_0000000f + + + AP_00051001 + ATU_00000010 + ATU_00000011 + + + AP_00010003 + ATU_00000012 + ATU_00000013 + + + + AC_00031001 + AC_00031002 + + + AC_00031003 + + + AC_00011001 + AC_00011002 + AC_00011003 + + + AC_00021001 + AC_00021002 + AP_00021101 + AP_00010002 + + + AC_00021101 + AC_00021102 + AP_00021001 + AP_00010002 + + + AC_00041001 + AC_00041002 + AC_00041003 + AC_00041004 + 1 + 2.0 + 1 + + + AC_00051001 + AC_00051002 + + + + + 20.000000 + 10.000000 + 0.800000 + 0.8 + 0.0 + 0.05 + 0.08 + 0.06 + + RearLeftBottom + RearRightBottom + + 1 + + + 10.000000 + 0.000000 + 0.900000 + 0.7 + 0.1 + 0.08 + 0.1 + 0.09 + + RearLeftBottom + RearRightBottom + + 1 + + + 0.000000 + -10.000000 + 1.00000 + 0.6 + 0.2 + 0.1 + 0.15 + 0.12 + + RearLeftBottom + RearRightBottom + + 1 + + + + + 25.000000 + 15.000000 + 0.700000 + 0.7 + 0.9 + 0 + + + 12.000000 + 7.000000 + 0.700000 + 0.8 + 0.8 + 0 + + + -10.000000 + -13.000000 + 1.10000 + 0.5 + 0.7 + 0 + + + + + 0.8 + -0.7 + 0.8 + 1 + 1 + 0.4 + 1 + 3 + + LeftSide + RightSide + + + + 0.6 + -0.4 + 0.3 + 1 + 1 + 0.3 + 1 + 3 + + LeftSide + RightSide + + + + + 150 + + M+180_low + 180.000000 + -10.000000 + 1.000000 + + + + 2000 + 150 + + M+180_mid + 180.000000 + 0.000000 + 1.000000 + + + + 2000 + + M+180_high + 180.000000 + 10.000000 + 1.000000 + + + + + + AC_00010001 + AC_00010002 + + + + + + + AC_00010001 + AC_00010002 + + + + + + + AC_00021001 + AC_00021002 + + AC_00010001 + + + + + + AC_00021001 + AC_00021002 + + AC_00010002 + + + + + 1/sqrt(2) + 0 + 0 + 1 + 2.0 + 1 + + + + + cos(p)*cos(t) + -1 + 1 + 1 + 2.0 + 1 + + + + + sin(p)*cos(t) + 0 + 1 + 1 + 2.0 + 1 + + + + + sin(t) + 1 + 1 + 1 + 2.0 + 1 + + + + + + + + + AC_00031001 + AT_00031001_01 + + + AC_00031002 + AT_00031002_01 + + + AC_00031003 + AT_00031003_01 + + + AC_00011001 + AT_00011001_01 + + + AC_00011002 + AT_00011002_01 + + + AC_00011003 + AT_00011003_01 + + + AC_00021001 + AT_00021001_01 + + + AC_00021002 + AT_00021002_01 + + + AC_00041001 + AT_00041001_01 + + + AC_00041002 + AT_00041002_01 + + + AC_00041003 + AT_00041003_01 + + + AC_00041004 + AT_00041004_01 + + + AC_00051001 + AT_00051001_01 + + + AC_00051002 + AT_00051002_01 + + + AP_00010003 + AT_00011101_01 + AT_00011101_02 + + + + AS_00031001 + + + AS_00031002 + + + AS_00031003 + + + AS_00011001 + + + AS_00011002 + + + AS_00011003 + + + AS_00021001 + + + AS_00021002 + + + AS_00041001 + + + AS_00041002 + + + AS_00041003 + + + AS_00041004 + + + AS_00051001 + + + AS_00051002 + + + AS_00011101 + + + AS_00011101 + + + + AT_00010001_01 + AP_00010002 + + + + + urn:smpte:umid:060a2b34.01010105.01010f20.13000000.540bca53.41434f05.8ce5f4e3.5b72c985 + MXFTRACK_1 + MXFCHAN_3 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file