X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Ffile_group_test.cc;h=1d42741b65745783d47e67a7963b349b3a48e994;hb=9104df71728a5ca18e79ec242f3e6ed087238dab;hp=e0f83f6315ad877248f6311dd617e46d6956139e;hpb=3828baf56467224f5d44049bf1e7a7ed11f43a05;p=dcpomatic.git diff --git a/test/file_group_test.cc b/test/file_group_test.cc index e0f83f631..1d42741b6 100644 --- a/test/file_group_test.cc +++ b/test/file_group_test.cc @@ -19,7 +19,8 @@ */ /** @file test/file_group_test.cc - * @brief Check that FileGroup works. + * @brief Test FileGroup class. + * @ingroup selfcontained */ #include @@ -87,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);