2 // Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
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 #include <boost/gil.hpp>
10 #define BOOST_TEST_MODULE test_image_view_subimage_view
11 #include "unit_test.hpp"
12 #include "unit_test_utility.hpp"
13 #include "core/image/test_fixture.hpp"
15 namespace gil
= boost::gil
;
16 namespace fixture
= boost::gil::test::fixture
;
18 BOOST_AUTO_TEST_SUITE(subimage_view
)
20 BOOST_AUTO_TEST_CASE_TEMPLATE(subimage_equals_image
, Image
, fixture::image_types
)
22 auto i0
= fixture::create_image
<Image
>(4, 4, 128);
23 auto const v0
= gil::const_view(i0
);
24 BOOST_TEST(v0
.dimensions().x
== 4);
25 BOOST_TEST(v0
.dimensions().y
== 4);
27 // request with 2 x point_t values
29 auto v1
= gil::subimage_view(gil::view(i0
), {0, 0}, i0
.dimensions());
30 BOOST_TEST(v0
.dimensions() == v1
.dimensions());
31 BOOST_TEST(gil::equal_pixels(v0
, v1
));
33 // request with 4 x dimension values
35 auto v1
= gil::subimage_view(gil::view(i0
), 0, 0, i0
.dimensions().x
, i0
.dimensions().y
);
36 BOOST_TEST(v0
.dimensions() == v1
.dimensions());
37 BOOST_TEST(gil::equal_pixels(v0
, v1
));
41 BOOST_AUTO_TEST_CASE_TEMPLATE(subimage_equals_image_quadrants
, Image
, fixture::image_types
)
43 auto i0
= fixture::create_image
<Image
>(4, 4, 0);
44 auto v0
= gil::view(i0
);
45 // create test image and set values of pixels in:
47 auto const i1
= fixture::create_image
<Image
>(2, 2, 255);
48 v0
[2] = v0
[3] = v0
[6] = v0
[7] = gil::const_view(i1
)[0];
50 auto const i2
= fixture::create_image
<Image
>(2, 2, 128);
51 v0
[0] = v0
[1] = v0
[4] = v0
[5] = gil::const_view(i2
)[0];
53 auto const i3
= fixture::create_image
<Image
>(2, 2, 64);
54 v0
[8] = v0
[9] = v0
[12] = v0
[13] = gil::const_view(i3
)[0];
56 auto const i4
= fixture::create_image
<Image
>(2, 2, 32);
57 v0
[10] = v0
[11] = v0
[14] = v0
[15] = gil::const_view(i4
)[0];
59 auto v1
= gil::subimage_view(gil::view(i0
), { 2, 0 }, i0
.dimensions() / 2);
60 BOOST_TEST(gil::equal_pixels(v1
, gil::const_view(i1
)));
61 auto v2
= gil::subimage_view(gil::view(i0
), { 0, 0 }, i0
.dimensions() / 2);
62 BOOST_TEST(gil::equal_pixels(v2
, gil::const_view(i2
)));
63 auto v3
= gil::subimage_view(gil::view(i0
), { 0, 2 }, i0
.dimensions() / 2);
64 BOOST_TEST(gil::equal_pixels(v3
, gil::const_view(i3
)));
65 auto v4
= gil::subimage_view(gil::view(i0
), { 2, 2 }, i0
.dimensions() / 2);
66 BOOST_TEST(gil::equal_pixels(v4
, gil::const_view(i4
)));
69 BOOST_AUTO_TEST_SUITE_END()