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