X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Ffile_group_test.cc;h=1d42741b65745783d47e67a7963b349b3a48e994;hb=39fb8198febde1937019db1c300ec363aab5aa56;hp=888834511677c8d95f7cffa76a2c921b0dc3fff9;hpb=cfdd68eb5fb0ef8423e860103ad4e5510994f1da;p=dcpomatic.git diff --git a/test/file_group_test.cc b/test/file_group_test.cc index 888834511..1d42741b6 100644 --- a/test/file_group_test.cc +++ b/test/file_group_test.cc @@ -1,24 +1,26 @@ /* Copyright (C) 2013-2014 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ /** @file test/file_group_test.cc - * @brief Check that FileGroup works. + * @brief Test FileGroup class. + * @ingroup selfcontained */ #include @@ -36,7 +38,7 @@ BOOST_AUTO_TEST_CASE (file_group_test) for (int i = 0; i < 65536; ++i) { data[i] = rand() & 0xff; } - + int const num_files = 4; int length[] = { @@ -86,12 +88,24 @@ BOOST_AUTO_TEST_CASE (file_group_test) BOOST_CHECK_EQUAL (memcmp (data + pos, test, 128), 0); pos += 128; - /* Read overlapping B/C/D and over-reading */ + /* Read overlapping B/C/D and over-reading by a lot */ BOOST_CHECK_EQUAL (fg.read (test, total_length * 3), total_length - pos); BOOST_CHECK_EQUAL (memcmp (data + pos, test, total_length - pos), 0); - /* Bad seek */ - BOOST_CHECK_EQUAL (fg.seek (total_length * 2, SEEK_SET), -1); + /* Over-read by a little */ + BOOST_CHECK_EQUAL (fg.seek (0, SEEK_SET), 0); + BOOST_CHECK_EQUAL (fg.read (test, total_length), total_length); + BOOST_CHECK_EQUAL (fg.read (test, 1), 0); + + /* Seeking off the end of the file should not give an error */ + BOOST_CHECK_EQUAL (fg.seek (total_length * 2, SEEK_SET), total_length * 2); + /* and attempting to read should return nothing */ + BOOST_CHECK_EQUAL (fg.read (test, 64), 0); + /* but the requested seek should be remembered, so if we now go back (relatively) */ + BOOST_CHECK_EQUAL (fg.seek (-total_length * 2, SEEK_CUR), 0); + /* we should be at the start again */ + BOOST_CHECK_EQUAL (fg.read (test, 64), 64); + BOOST_CHECK_EQUAL (memcmp (data, test, 64), 0); /* SEEK_SET */ BOOST_CHECK_EQUAL (fg.seek (999, SEEK_SET), 999);