2 // Copyright 2013 Christian Henning
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
8 #define BOOST_GIL_IO_ADD_FS_PATH_SUPPORT
9 #define BOOST_FILESYSTEM_VERSION 3
11 #include <boost/gil.hpp>
12 #include <boost/gil/extension/io/bmp.hpp>
14 #include <boost/test/unit_test.hpp>
17 #include <type_traits>
22 using namespace boost;
24 namespace fs = boost::filesystem;
26 BOOST_AUTO_TEST_SUITE( gil_io_tests )
28 #ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
30 BOOST_AUTO_TEST_CASE( make_reader_backend_test )
33 static_assert(std::is_same<gil::detail::is_supported_path_spec<char*>::type, mpl::true_>::value, "");
35 get_reader_backend< const char*, bmp_tag >::type backend_char = make_reader_backend( bmp_filename.c_str(), bmp_tag() );
36 get_reader_backend< std::string, bmp_tag >::type backend_string = make_reader_backend( bmp_filename, bmp_tag() );
38 FILE* file = fopen( bmp_filename.c_str(), "rb" );
39 get_reader_backend< FILE*, bmp_tag >::type backend_file = make_reader_backend( file, bmp_tag() );
41 ifstream in( bmp_filename.c_str(), ios::binary );
42 get_reader_backend< std::ifstream, bmp_tag >::type backend_ifstream = make_reader_backend( in, bmp_tag() );
44 fs::path my_path( bmp_filename );
45 get_reader_backend< std::wstring, bmp_tag >::type backend_wstring = make_reader_backend( my_path.wstring(), bmp_tag() );
46 get_reader_backend< fs::path , bmp_tag >::type backend_path = make_reader_backend( my_path , bmp_tag() );
50 get_reader_backend< const char*, bmp_tag >::type backend_char = make_reader_backend( bmp_filename.c_str(), image_read_settings<bmp_tag>() );
51 get_reader_backend< std::string, bmp_tag >::type backend_string = make_reader_backend( bmp_filename, image_read_settings<bmp_tag>() );
53 FILE* file = fopen( bmp_filename.c_str(), "rb" );
54 get_reader_backend< FILE*, bmp_tag >::type backend_file = make_reader_backend( file, image_read_settings<bmp_tag>() );
56 ifstream in( bmp_filename.c_str(), ios::binary );
57 get_reader_backend< std::ifstream, bmp_tag >::type backend_ifstream = make_reader_backend( in, image_read_settings<bmp_tag>() );
59 fs::path my_path( bmp_filename );
60 get_reader_backend< std::wstring, bmp_tag >::type backend_wstring = make_reader_backend( my_path.wstring(), image_read_settings<bmp_tag>() );
61 get_reader_backend< fs::path, bmp_tag >::type backend_path = make_reader_backend( my_path , image_read_settings<bmp_tag>() );
65 BOOST_AUTO_TEST_CASE( make_reader_test )
68 get_reader_backend< const char*, bmp_tag >::type reader_char = make_reader( bmp_filename.c_str(), bmp_tag(), gil::detail::read_and_no_convert() );
69 get_reader_backend< std::string, bmp_tag >::type reader_string = make_reader( bmp_filename, bmp_tag(), gil::detail::read_and_no_convert() );
71 FILE* file = fopen( bmp_filename.c_str(), "rb" );
72 get_reader_backend< FILE*, bmp_tag >::type reader_file = make_reader( file, bmp_tag(), gil::detail::read_and_no_convert() );
74 ifstream in( bmp_filename.c_str(), ios::binary );
75 get_reader_backend< std::ifstream, bmp_tag >::type reader_ifstream = make_reader( in, bmp_tag(), gil::detail::read_and_no_convert() );
77 fs::path my_path( bmp_filename );
78 get_reader_backend< std::wstring, bmp_tag >::type reader_wstring = make_reader( my_path.wstring(), bmp_tag(), gil::detail::read_and_no_convert() );
79 get_reader_backend< fs::path , bmp_tag >::type reader_path = make_reader( my_path , bmp_tag(), gil::detail::read_and_no_convert() );
83 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() );
84 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() );
86 FILE* file = fopen( bmp_filename.c_str(), "rb" );
87 get_reader_backend< FILE*, bmp_tag >::type reader_file = make_reader( file, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
89 ifstream in( bmp_filename.c_str(), ios::binary );
90 get_reader_backend< std::ifstream, bmp_tag >::type reader_ifstream = make_reader( in, image_read_settings< bmp_tag >(), gil::detail::read_and_no_convert() );
92 fs::path my_path( bmp_filename );
93 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() );
94 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() );
98 BOOST_AUTO_TEST_CASE( make_dynamic_image_reader_test )
101 get_dynamic_image_reader< const char*, bmp_tag >::type reader_char = make_dynamic_image_reader( bmp_filename.c_str(), bmp_tag() );
102 get_dynamic_image_reader< std::string, bmp_tag >::type reader_string = make_dynamic_image_reader( bmp_filename, bmp_tag() );
104 FILE* file = fopen( bmp_filename.c_str(), "rb" );
105 get_dynamic_image_reader< FILE*, bmp_tag >::type reader_file = make_dynamic_image_reader( file, bmp_tag() );
107 ifstream in( bmp_filename.c_str(), ios::binary );
108 get_dynamic_image_reader< std::ifstream, bmp_tag >::type reader_ifstream = make_dynamic_image_reader( in, bmp_tag() );
110 fs::path my_path( bmp_filename );
111 get_dynamic_image_reader< std::wstring, bmp_tag >::type reader_wstring = make_dynamic_image_reader( my_path.wstring(), bmp_tag() );
112 get_dynamic_image_reader< fs::path , bmp_tag >::type reader_path = make_dynamic_image_reader( my_path , bmp_tag() );
116 get_dynamic_image_reader< const char*, bmp_tag >::type reader_char = make_dynamic_image_reader( bmp_filename.c_str(), image_read_settings< bmp_tag >() );
117 get_dynamic_image_reader< std::string, bmp_tag >::type reader_string = make_dynamic_image_reader( bmp_filename, image_read_settings< bmp_tag >() );
119 FILE* file = fopen( bmp_filename.c_str(), "rb" );
120 get_dynamic_image_reader< FILE*, bmp_tag >::type reader_file = make_dynamic_image_reader( file, image_read_settings< bmp_tag >() );
122 ifstream in( bmp_filename.c_str(), ios::binary );
123 get_dynamic_image_reader< std::ifstream, bmp_tag >::type reader_ifstream = make_dynamic_image_reader( in, image_read_settings< bmp_tag >() );
125 fs::path my_path( bmp_filename );
126 get_dynamic_image_reader< std::wstring, bmp_tag >::type reader_wstring = make_dynamic_image_reader( my_path.wstring(), image_read_settings< bmp_tag >() );
127 get_dynamic_image_reader< fs::path , bmp_tag >::type reader_path = make_dynamic_image_reader( my_path , image_read_settings< bmp_tag >() );
131 BOOST_AUTO_TEST_CASE( make_writer_test )
134 using writer_t = get_writer<char const*, bmp_tag>::type;
136 static_assert(std::is_same<gil::detail::is_writer<writer_t>::type, boost::mpl::true_>::value, "");
140 get_writer< const char*, bmp_tag >::type writer_char = make_writer(( bmp_out + "make_test.bmp" ).c_str(), bmp_tag() );
141 get_writer< std::string, bmp_tag >::type writer_string = make_writer(( bmp_out + "make_test.bmp" ), bmp_tag() );
143 FILE* file = fopen(( bmp_out + "make_test.bmp" ).c_str(), "wb" );
144 get_writer< FILE*, bmp_tag >::type writer_file = make_writer( file, bmp_tag() );
146 ofstream out(( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
147 get_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_writer( out, bmp_tag() );
149 fs::path my_path( ( bmp_out + "make_test.bmp" ).c_str() );
150 get_writer< std::wstring, bmp_tag >::type writer_wstring = make_writer( my_path.wstring(), bmp_tag() );
151 get_writer< fs::path , bmp_tag >::type writer_path = make_writer( my_path , bmp_tag() );
155 get_writer< const char*, bmp_tag >::type writer_char = make_writer(( bmp_out + "make_test.bmp" ).c_str(), image_write_info< bmp_tag >() );
156 get_writer< std::string, bmp_tag >::type writer_string = make_writer(( bmp_out + "make_test.bmp" ) , image_write_info< bmp_tag >() );
158 FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
159 get_writer< FILE*, bmp_tag >::type writer_file = make_writer( file, image_write_info< bmp_tag >() );
161 ofstream out( ( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
162 get_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_writer( out, image_write_info< bmp_tag >() );
164 fs::path my_path( bmp_out + "make_test.bmp" );
165 get_writer< std::wstring, bmp_tag >::type writer_wstring = make_writer( my_path.wstring(), image_write_info< bmp_tag >() );
166 get_writer< fs::path , bmp_tag >::type writer_path = make_writer( my_path , image_write_info< bmp_tag >() );
170 BOOST_AUTO_TEST_CASE( make_dynamic_image_writer_test )
173 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() );
174 get_dynamic_image_writer< std::string, bmp_tag >::type writer_string = make_dynamic_image_writer( bmp_out + "make_test.bmp", bmp_tag() );
176 FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
177 get_dynamic_image_writer< FILE*, bmp_tag >::type writer_file = make_dynamic_image_writer( file, bmp_tag() );
179 ofstream out(( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
180 get_dynamic_image_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_dynamic_image_writer( out, bmp_tag() );
182 fs::path my_path( bmp_out + "make_test.bmp" );
183 get_dynamic_image_writer< std::wstring, bmp_tag >::type writer_wstring = make_dynamic_image_writer( my_path.wstring(), bmp_tag() );
184 get_dynamic_image_writer< fs::path , bmp_tag >::type writer_path = make_dynamic_image_writer( my_path , bmp_tag() );
188 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 >() );
189 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 >() );
191 FILE* file = fopen( (bmp_out + string( "make_test.bmp")).c_str(), "wb" );
192 get_dynamic_image_writer< FILE*, bmp_tag >::type writer_file = make_dynamic_image_writer( file, image_write_info< bmp_tag >() );
194 ofstream out(( bmp_out + "make_test.bmp" ).c_str(), ios::binary );
195 get_dynamic_image_writer< std::ofstream, bmp_tag >::type writer_ofstream = make_dynamic_image_writer( out, image_write_info< bmp_tag >() );
197 fs::path my_path( bmp_out + "make_test.bmp" );
198 get_dynamic_image_writer< std::wstring, bmp_tag >::type writer_wstring = make_dynamic_image_writer( my_path.wstring(), image_write_info< bmp_tag >() );
199 get_dynamic_image_writer< fs::path , bmp_tag >::type writer_path = make_dynamic_image_writer( my_path , image_write_info< bmp_tag >() );
203 #endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
205 BOOST_AUTO_TEST_SUITE_END()