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
16 using namespace std;
17 using namespace boost;
18 using namespace boost::iostreams;
19 using namespace boost::iostreams::test;
20 using boost::unit_test::test_suite;
21
seekable_file_test()22 void 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
init_unit_test_suite(int,char * [])51 test_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