• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2013 Christian Henning
3 //
4 // Distributed under the Boost Software License, Version 1.0
5 // See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt
7 //
8 #define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
9 #define BOOST_FILESYSTEM_VERSION 3
10 
11 #include <boost/gil/extension/io/bmp.hpp>
12 
13 #include <boost/gil.hpp>
14 #include <boost/gil/detail/mp11.hpp>
15 
16 #include <boost/test/unit_test.hpp>
17 
18 #include <fstream>
19 #include <type_traits>
20 
21 #include "paths.hpp"
22 
23 using namespace std;
24 using namespace boost;
25 using namespace gil;
26 namespace fs = boost::filesystem;
27 
28 BOOST_AUTO_TEST_SUITE( gil_io_tests )
29 
30 #ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
31 
BOOST_AUTO_TEST_CASE(make_reader_backend_test)32 BOOST_AUTO_TEST_CASE( make_reader_backend_test )
33 {
34     {
35         static_assert(std::is_same<gil::detail::is_supported_path_spec<char*>::type, std::true_type>::value, "");
36 
37         get_reader_backend< const char*, bmp_tag >::type backend_char   = make_reader_backend( bmp_filename.c_str(), bmp_tag() );
38         get_reader_backend< std::string, bmp_tag >::type backend_string = make_reader_backend( bmp_filename, bmp_tag() );
39 
40         FILE* file = fopen( bmp_filename.c_str(), "rb" );
41         get_reader_backend< FILE*, bmp_tag >::type backend_file = make_reader_backend( file, bmp_tag() );
42 
43         ifstream in( bmp_filename.c_str(), ios::binary );
44         get_reader_backend< std::ifstream, bmp_tag >::type backend_ifstream = make_reader_backend( in, bmp_tag() );
45 
46         fs::path my_path( bmp_filename );
47         get_reader_backend< std::wstring, bmp_tag >::type backend_wstring = make_reader_backend( my_path.wstring(), bmp_tag() );
48         get_reader_backend< fs::path    , bmp_tag >::type backend_path    = make_reader_backend( my_path          , bmp_tag() );
49     }
50 
51     {
52         get_reader_backend< const char*, bmp_tag >::type backend_char   = make_reader_backend( bmp_filename.c_str(), image_read_settings<bmp_tag>() );
53         get_reader_backend< std::string, bmp_tag >::type backend_string = make_reader_backend( bmp_filename, image_read_settings<bmp_tag>() );
54 
55         FILE* file = fopen( bmp_filename.c_str(), "rb" );
56         get_reader_backend< FILE*, bmp_tag >::type backend_file = make_reader_backend( file, image_read_settings<bmp_tag>() );
57 
58         ifstream in( bmp_filename.c_str(), ios::binary );
59         get_reader_backend< std::ifstream, bmp_tag >::type backend_ifstream = make_reader_backend( in, image_read_settings<bmp_tag>() );
60 
61         fs::path my_path( bmp_filename );
62         get_reader_backend< std::wstring, bmp_tag >::type backend_wstring = make_reader_backend( my_path.wstring(), image_read_settings<bmp_tag>() );
63         get_reader_backend< fs::path, bmp_tag >::type backend_path    = make_reader_backend( my_path          , image_read_settings<bmp_tag>() );
64     }
65 }
66 
BOOST_AUTO_TEST_CASE(make_reader_test)67 BOOST_AUTO_TEST_CASE( make_reader_test )
68 {
69     {
70         get_reader_backend< const char*, bmp_tag >::type reader_char   = make_reader( bmp_filename.c_str(), bmp_tag(), gil::detail::read_and_no_convert() );
71         get_reader_backend< std::string, bmp_tag >::type reader_string = make_reader( bmp_filename, bmp_tag(), gil::detail::read_and_no_convert() );
72 
73         FILE* file = fopen( bmp_filename.c_str(), "rb" );
74         get_reader_backend< FILE*, bmp_tag >::type reader_file = make_reader( file, bmp_tag(), gil::detail::read_and_no_convert() );
75 
76         ifstream in( bmp_filename.c_str(), ios::binary );
77         get_reader_backend< std::ifstream, bmp_tag >::type reader_ifstream = make_reader( in, bmp_tag(), gil::detail::read_and_no_convert() );
78 
79         fs::path my_path( bmp_filename );
80         get_reader_backend< std::wstring, bmp_tag >::type reader_wstring = make_reader( my_path.wstring(), bmp_tag(), gil::detail::read_and_no_convert() );
81         get_reader_backend< fs::path    , bmp_tag >::type reader_path    = make_reader( my_path          , bmp_tag(), gil::detail::read_and_no_convert() );
82     }
83 
84     {
85         get_reader_backend< const char*, bmp_tag >::type reader_char   = make_reader( bmp_filename.c_str(), image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
86         get_reader_backend< std::string, bmp_tag >::type reader_string = make_reader( bmp_filename, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
87 
88         FILE* file = fopen( bmp_filename.c_str(), "rb" );
89         get_reader_backend< FILE*, bmp_tag >::type reader_file = make_reader( file, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
90 
91         ifstream in( bmp_filename.c_str(), ios::binary );
92         get_reader_backend< std::ifstream, bmp_tag >::type reader_ifstream = make_reader( in, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
93 
94         fs::path my_path( bmp_filename );
95         get_reader_backend< std::wstring, bmp_tag >::type reader_wstring = make_reader( my_path.wstring(), image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
96         get_reader_backend< fs::path, bmp_tag >::type reader_path    = make_reader( my_path          , image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
97     }
98 }
99 
BOOST_AUTO_TEST_CASE(make_dynamic_image_reader_test)100 BOOST_AUTO_TEST_CASE( make_dynamic_image_reader_test )
101 {
102     {
103         get_dynamic_image_reader< const char*, bmp_tag >::type reader_char   = make_dynamic_image_reader( bmp_filename.c_str(), bmp_tag() );
104         get_dynamic_image_reader< std::string, bmp_tag >::type reader_string = make_dynamic_image_reader( bmp_filename, bmp_tag() );
105 
106         FILE* file = fopen( bmp_filename.c_str(), "rb" );
107         get_dynamic_image_reader< FILE*, bmp_tag >::type reader_file = make_dynamic_image_reader( file, bmp_tag() );
108 
109         ifstream in( bmp_filename.c_str(), ios::binary );
110         get_dynamic_image_reader< std::ifstream, bmp_tag >::type reader_ifstream = make_dynamic_image_reader( in, bmp_tag() );
111 
112         fs::path my_path( bmp_filename );
113         get_dynamic_image_reader< std::wstring, bmp_tag >::type reader_wstring = make_dynamic_image_reader( my_path.wstring(), bmp_tag() );
114         get_dynamic_image_reader< fs::path    , bmp_tag >::type reader_path    = make_dynamic_image_reader( my_path          , bmp_tag() );
115     }
116 
117     {
118         get_dynamic_image_reader< const char*, bmp_tag >::type reader_char   = make_dynamic_image_reader( bmp_filename.c_str(), image_read_settings< bmp_tag >() );
119         get_dynamic_image_reader< std::string, bmp_tag >::type reader_string = make_dynamic_image_reader( bmp_filename, image_read_settings< bmp_tag >() );
120 
121         FILE* file = fopen( bmp_filename.c_str(), "rb" );
122         get_dynamic_image_reader< FILE*, bmp_tag >::type reader_file = make_dynamic_image_reader( file, image_read_settings< bmp_tag >() );
123 
124         ifstream in( bmp_filename.c_str(), ios::binary );
125         get_dynamic_image_reader< std::ifstream, bmp_tag >::type reader_ifstream = make_dynamic_image_reader( in, image_read_settings< bmp_tag >() );
126 
127         fs::path my_path( bmp_filename );
128         get_dynamic_image_reader< std::wstring, bmp_tag >::type reader_wstring = make_dynamic_image_reader( my_path.wstring(), image_read_settings< bmp_tag >() );
129         get_dynamic_image_reader< fs::path    , bmp_tag >::type reader_path    = make_dynamic_image_reader( my_path          , image_read_settings< bmp_tag >() );
130     }
131 }
132 
BOOST_AUTO_TEST_CASE(make_writer_test)133 BOOST_AUTO_TEST_CASE( make_writer_test )
134 {
135     {
136         using writer_t = get_writer<char const*, bmp_tag>::type;
137 
138         static_assert(std::is_same<gil::detail::is_writer<writer_t>::type, std::true_type>::value, "");
139     }
140 
141     {
142         get_writer< const char*, bmp_tag >::type writer_char   = make_writer(( bmp_out + "make_test.bmp" ).c_str(), bmp_tag() );
143         get_writer< std::string, bmp_tag >::type writer_string = make_writer(( bmp_out + "make_test.bmp" ), bmp_tag() );
144 
145         FILE* file = fopen(( bmp_out + "make_test.bmp" ).c_str(), "wb" );
146         get_writer< FILE*, bmp_tag >::type  writer_file = make_writer( file, bmp_tag() );
147 
148         ofstream out(( bmp_out  + "make_test.bmp" ).c_str(), ios::binary );
149         get_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_writer( out, bmp_tag() );
150 
151         fs::path my_path( ( bmp_out  + "make_test.bmp" ).c_str() );
152         get_writer< std::wstring, bmp_tag >::type writer_wstring = make_writer( my_path.wstring(), bmp_tag() );
153         get_writer< fs::path    , bmp_tag >::type writer_path    = make_writer( my_path          , bmp_tag() );
154     }
155 
156     {
157         get_writer< const char*, bmp_tag >::type writer_char   = make_writer(( bmp_out + "make_test.bmp" ).c_str(), image_write_info< bmp_tag >() );
158         get_writer< std::string, bmp_tag >::type writer_string = make_writer(( bmp_out + "make_test.bmp" )        , image_write_info< bmp_tag >() );
159 
160         FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
161         get_writer< FILE*, bmp_tag >::type writer_file = make_writer( file, image_write_info< bmp_tag >() );
162 
163         ofstream out( ( bmp_out  + "make_test.bmp" ).c_str(), ios::binary );
164         get_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_writer( out, image_write_info< bmp_tag >() );
165 
166         fs::path my_path( bmp_out  + "make_test.bmp" );
167         get_writer< std::wstring, bmp_tag >::type writer_wstring = make_writer( my_path.wstring(), image_write_info< bmp_tag >() );
168         get_writer< fs::path    , bmp_tag >::type writer_path    = make_writer( my_path          , image_write_info< bmp_tag >() );
169     }
170 }
171 
BOOST_AUTO_TEST_CASE(make_dynamic_image_writer_test)172 BOOST_AUTO_TEST_CASE( make_dynamic_image_writer_test )
173 {
174     {
175         get_dynamic_image_writer< const char*, bmp_tag >::type writer_char = make_dynamic_image_writer( (bmp_out + string( "make_test.bmp")).c_str(), bmp_tag() );
176         get_dynamic_image_writer< std::string, bmp_tag >::type writer_string = make_dynamic_image_writer( bmp_out  + "make_test.bmp", bmp_tag() );
177 
178         FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
179         get_dynamic_image_writer< FILE*, bmp_tag >::type writer_file = make_dynamic_image_writer( file, bmp_tag() );
180 
181         ofstream out(( bmp_out  + "make_test.bmp" ).c_str(), ios::binary );
182         get_dynamic_image_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_dynamic_image_writer( out, bmp_tag() );
183 
184         fs::path my_path( bmp_out  + "make_test.bmp" );
185         get_dynamic_image_writer< std::wstring, bmp_tag >::type writer_wstring = make_dynamic_image_writer( my_path.wstring(), bmp_tag() );
186         get_dynamic_image_writer< fs::path    , bmp_tag >::type writer_path    = make_dynamic_image_writer( my_path          , bmp_tag() );
187     }
188 
189     {
190         get_dynamic_image_writer< const char*, bmp_tag >::type writer_char   = make_dynamic_image_writer( (bmp_out + string( "make_test.bmp")).c_str(), image_write_info< bmp_tag >() );
191         get_dynamic_image_writer< std::string, bmp_tag >::type writer_string = make_dynamic_image_writer( bmp_out  + "make_test.bmp", image_write_info< bmp_tag >() );
192 
193         FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
194         get_dynamic_image_writer< FILE*, bmp_tag >::type writer_file = make_dynamic_image_writer( file, image_write_info< bmp_tag >() );
195 
196         ofstream out(( bmp_out  + "make_test.bmp" ).c_str(), ios::binary );
197         get_dynamic_image_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_dynamic_image_writer( out, image_write_info< bmp_tag >() );
198 
199         fs::path my_path( bmp_out  + "make_test.bmp" );
200         get_dynamic_image_writer< std::wstring, bmp_tag >::type writer_wstring = make_dynamic_image_writer( my_path.wstring(), image_write_info< bmp_tag >() );
201         get_dynamic_image_writer< fs::path    , bmp_tag >::type writer_path    = make_dynamic_image_writer( my_path          , image_write_info< bmp_tag >() );
202     }
203 }
204 
205 #endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
206 
207 BOOST_AUTO_TEST_SUITE_END()
208