Use $HOME rather than hard-coded user name.
[dcpomatic.git] / test / mca_subdescriptors_test.cc
index 7585aa1ab6b500f88e7a1fc8918b91cc199d790f..e34a909f44827274ccd74f365e5ab717b2337120 100644 (file)
@@ -36,17 +36,18 @@ using std::vector;
 
 static
 void
-test_descriptors(vector<dcp::Channel> channels, vector<string> mca_tag_symbols, string group_name)
+test_descriptors(int mxf_channels, vector<dcp::Channel> active_channels, vector<string> mca_tag_symbols, string group_name)
 {
        auto content = content_factory("test/data/flat_red.png");
-       for (auto i = 0U; i < channels.size(); ++i) {
+       for (auto i = 0; i < mxf_channels; ++i) {
                content.push_back(content_factory("test/data/C.wav").front());
        }
        auto film = new_test_film2("mca_subdescriptors_written_correctly", content);
        film->set_interop(false);
+       film->set_audio_channels(mxf_channels);
 
        int N = 1;
-       for (auto channel: channels) {
+       for (auto channel: active_channels) {
                auto mapping = AudioMapping(1, MAX_DCP_AUDIO_CHANNELS);
                mapping.set(0, channel, 1);
                content[N]->audio->set_mapping(mapping);
@@ -71,21 +72,35 @@ test_descriptors(vector<dcp::Channel> channels, vector<string> mca_tag_symbols,
 }
 
 
-BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_mono)
+/* This seems like an impossible case but let's check it anyway */
+BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_mono_in_2_channel)
 {
-       test_descriptors({ dcp::Channel::CENTRE }, { "chL", "chR", "chC", "chLFE", "chLs", "chRs" }, "sg51");
+       test_descriptors(2, { dcp::Channel::CENTRE }, { "chL", "chR" }, "sg51");
 }
 
 
-BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_stereo)
+BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_mono_in_6_channel)
 {
-       test_descriptors({ dcp::Channel::LEFT, dcp::Channel::RIGHT }, { "chL", "chR", "chC", "chLFE", "chLs", "chRs" }, "sg51");
+       test_descriptors(6, { dcp::Channel::CENTRE }, { "chL", "chR", "chC", "chLFE", "chLs", "chRs" }, "sg51");
+}
+
+
+/* If we only have two channels in the MXF we shouldn't see any extra descriptors */
+BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_stereo_in_2_channel)
+{
+       test_descriptors(2, { dcp::Channel::LEFT, dcp::Channel::RIGHT }, { "chL", "chR" }, "sg51");
+}
+
+
+BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_stereo_in_6_channel)
+{
+       test_descriptors(6, { dcp::Channel::LEFT, dcp::Channel::RIGHT }, { "chL", "chR", "chC", "chLFE", "chLs", "chRs" }, "sg51");
 }
 
 
 BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_51)
 {
-       test_descriptors(
+       test_descriptors(6,
                {
                        dcp::Channel::LEFT,
                        dcp::Channel::RIGHT,
@@ -102,7 +117,7 @@ BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_51)
 
 BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_51_with_hi_vi)
 {
-       test_descriptors(
+       test_descriptors(8,
                {
                        dcp::Channel::LEFT,
                        dcp::Channel::RIGHT,
@@ -121,7 +136,7 @@ BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_51_with_hi_vi)
 
 BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_71)
 {
-       test_descriptors(
+       test_descriptors(16,
                {
                        dcp::Channel::LEFT,
                        dcp::Channel::RIGHT,
@@ -140,7 +155,7 @@ BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_71)
 
 BOOST_AUTO_TEST_CASE(mca_subdescriptors_written_correctly_71_with_hi_vi)
 {
-       test_descriptors(
+       test_descriptors(16,
                {
                        dcp::Channel::LEFT,
                        dcp::Channel::RIGHT,