Omit vposition property when it's 0.
[libdcp.git] / test / sound_frame_test.cc
index 86b7d845a2bbcacd6889d016b1591452981cb5ba..a8060bd47ec5ca74c8c07ea9bb506f55f9402972 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2015 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2015-2019 Carl Hetherington <cth@carlh.net>
 
     This file is part of libdcp.
 
 
     You should have received a copy of the GNU General Public License
     along with libdcp.  If not, see <http://www.gnu.org/licenses/>.
+
+    In addition, as a special exception, the copyright holders give
+    permission to link the code of portions of this program with the
+    OpenSSL library under certain conditions as described in each
+    individual source file, and distribute linked combinations
+    including the two.
+
+    You must obey the GNU General Public License in all respects
+    for all of the code used other than OpenSSL.  If you modify
+    file(s) with this exception, you may extend this exception to your
+    version of the file(s), but you are not obligated to do so.  If you
+    do not wish to do so, delete this exception statement from your
+    version.  If you delete this exception statement from all source
+    files in the program, then also delete it here.
 */
 
 #include <boost/test/unit_test.hpp>
@@ -25,7 +39,7 @@
 #include "exceptions.h"
 #include <sndfile.h>
 
-using boost::shared_ptr;
+using std::shared_ptr;
 
 BOOST_AUTO_TEST_CASE (sound_frame_test)
 {
@@ -50,6 +64,7 @@ BOOST_AUTO_TEST_CASE (sound_frame_test)
        int const read = sf_readf_int (sndfile, ref_data, frame_length);
        BOOST_REQUIRE_EQUAL (read, frame_length);
 
+       /* Check raw data is as we expect */
        uint8_t const * p = frame->data ();
        for (int i = 0; i < (frame_length * channels); ++i) {
                int x = ref_data[i] >> 8;
@@ -60,16 +75,27 @@ BOOST_AUTO_TEST_CASE (sound_frame_test)
                BOOST_REQUIRE_EQUAL (x, y);
                p += 3;
        }
+
+       /* Check SoundFrame::get() */
+       int* ref = ref_data;
+       for (int sample = 0; sample < frame_length; ++sample) {
+               for (int channel = 0; channel < channels; ++channel) {
+                       BOOST_REQUIRE_EQUAL ((*ref++) >> 8, frame->get(channel, sample));
+               }
+       }
 }
 
 BOOST_AUTO_TEST_CASE (sound_frame_test2)
 {
-       BOOST_CHECK_THROW (dcp::SoundAsset("frobozz"), dcp::FileError);
+       {
+               dcp::ASDCPErrorSuspender sus;
+               BOOST_CHECK_THROW (dcp::SoundAsset("frobozz"), dcp::FileError);
+       }
 
        dcp::SoundAsset asset (
                private_test /
                "TONEPLATES-SMPTE-PLAINTEXT_TST_F_XX-XX_ITL-TD_51-XX_2K_WOE_20111001_WOE_OV/pcm_95734608-5d47-4d3f-bf5f-9e9186b66afa_.mxf"
                );
 
-       BOOST_CHECK_THROW (asset.start_read()->get_frame (99999999), dcp::DCPReadError);
+       BOOST_CHECK_THROW (asset.start_read()->get_frame (99999999), dcp::ReadError);
 }