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/extension/io/bmp.hpp>
13 #include <boost/gil.hpp>
14 #include <boost/gil/detail/mp11.hpp>
16 #include <boost/test/unit_test.hpp>
19 #include <type_traits>
24 using namespace boost;
26 namespace fs = boost::filesystem;
28 BOOST_AUTO_TEST_SUITE( gil_io_tests )
30 #ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
32 BOOST_AUTO_TEST_CASE( make_reader_backend_test )
35 static_assert(std::is_same<gil::detail::is_supported_path_spec<char*>::type, std::true_type>::value, "");
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() );
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() );
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() );
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() );
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>() );
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>() );
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>() );
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>() );
67 BOOST_AUTO_TEST_CASE( make_reader_test )
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() );
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() );
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() );
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() );
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() );
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() );
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() );
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() );
100 BOOST_AUTO_TEST_CASE( make_dynamic_image_reader_test )
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() );
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() );
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() );
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() );
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 >() );
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 >() );
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 >() );
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 >() );
133 BOOST_AUTO_TEST_CASE( make_writer_test )
136 using writer_t = get_writer<char const*, bmp_tag>::type;
138 static_assert(std::is_same<gil::detail::is_writer<writer_t>::type, std::true_type>::value, "");
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() );
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() );
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() );
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() );
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 >() );
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 >() );
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 >() );
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 >() );
172 BOOST_AUTO_TEST_CASE( make_dynamic_image_writer_test )
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() );
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() );
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() );
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() );
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 >() );
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 >() );
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 >() );
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 >() );
205 #endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
207 BOOST_AUTO_TEST_SUITE_END()