Imported Upstream version 1.71.0
[platform/upstream/boost.git] / libs / gil / io / test / make.cpp
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.hpp>
12 #include <boost/gil/extension/io/bmp.hpp>
13
14 #include <boost/test/unit_test.hpp>
15
16 #include <fstream>
17 #include <type_traits>
18
19 #include "paths.hpp"
20
21 using namespace std;
22 using namespace boost;
23 using namespace gil;
24 namespace fs = boost::filesystem;
25
26 BOOST_AUTO_TEST_SUITE( gil_io_tests )
27
28 #ifdef BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
29
30 BOOST_AUTO_TEST_CASE( make_reader_backend_test )
31 {
32     {
33         static_assert(std::is_same<gil::detail::is_supported_path_spec<char*>::type, mpl::true_>::value, "");
34
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() );
37
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() );
40
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() );
43
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() );
47     }
48
49     {
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>() );
52
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>() );
55
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>() );
58
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>() );
62     }
63 }
64
65 BOOST_AUTO_TEST_CASE( make_reader_test )
66 {
67     {
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() );
70
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() );
73
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() );
76
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() );
80     }
81
82     {
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() );
85
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() );
88
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() );
91
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() );
95     }
96 }
97
98 BOOST_AUTO_TEST_CASE( make_dynamic_image_reader_test )
99 {
100     {
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() );
103
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() );
106
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() );
109
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() );
113     }
114
115     {
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 >() );
118
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 >() );
121
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 >() );
124
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 >() );
128     }
129 }
130
131 BOOST_AUTO_TEST_CASE( make_writer_test )
132 {
133     {
134         using writer_t = get_writer<char const*, bmp_tag>::type;
135
136         static_assert(std::is_same<gil::detail::is_writer<writer_t>::type, boost::mpl::true_>::value, "");
137     }
138
139     {
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() );
142
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() );
145
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() );
148
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() );
152     }
153
154     {
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 >() );
157
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 >() );
160
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 >() );
163
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 >() );
167     }
168 }
169
170 BOOST_AUTO_TEST_CASE( make_dynamic_image_writer_test )
171 {
172     {
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() );
175
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() );
178
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() );
181
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() );
185     }
186
187     {
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 >() );
190
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 >() );
193
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 >() );
196
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 >() );
200     }
201 }
202
203 #endif // BOOST_GIL_IO_TEST_ALLOW_READING_IMAGES
204
205 BOOST_AUTO_TEST_SUITE_END()