1// (C) Copyright 2008 CodeRage, LLC (turkanis at coderage dot com)
2// (C) Copyright 2004-2007 Jonathan Turkanis
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt.)
5
6// See http://www.boost.org/libs/iostreams for documentation.
7
8#include <fstream>
9#include <boost/iostreams/device/file.hpp>
10#include <boost/iostreams/filtering_stream.hpp>
11#include <boost/test/test_tools.hpp>
12#include <boost/test/unit_test.hpp>
13#include "detail/temp_file.hpp"
14#include "detail/verification.hpp"
15
16using namespace std;
17using namespace boost;
18using namespace boost::iostreams;
19using namespace boost::iostreams::test;
20using boost::unit_test::test_suite;
21
22void seekable_file_test()
23{
24 {
25 temp_file temp;
26 file f( temp.name(),
27 BOOST_IOS::in | BOOST_IOS::out |
28 BOOST_IOS::trunc | BOOST_IOS::binary);
29 filtering_stream<seekable> io(f);
30 io.exceptions(BOOST_IOS::failbit | BOOST_IOS::badbit);
31 BOOST_CHECK_MESSAGE(
32 test_seekable_in_chars(io),
33 "failed seeking within a file, in chars"
34 );
35 }
36
37 {
38 temp_file temp;
39 file f( temp.name(),
40 BOOST_IOS::in | BOOST_IOS::out |
41 BOOST_IOS::trunc | BOOST_IOS::binary);
42 filtering_stream<seekable> io(f);
43 io.exceptions(BOOST_IOS::failbit | BOOST_IOS::badbit);
44 BOOST_CHECK_MESSAGE(
45 test_seekable_in_chunks(io),
46 "failed seeking within a file, in chunks"
47 );
48 }
49}
50
51test_suite* init_unit_test_suite(int, char* [])
52{
53 test_suite* test = BOOST_TEST_SUITE("seekable file test");
54 test->add(BOOST_TEST_CASE(&seekable_file_test));
55 return test;
56}
57

source code of boost/libs/iostreams/test/seekable_file_test.cpp