Skip to content

Commit f8dad7c

Browse files
committed
Add tests for ext/blaze
Add tests for image<->matrix conversion and pixel<->vector conversion
1 parent ae8429b commit f8dad7c

File tree

5 files changed

+200
-2
lines changed

5 files changed

+200
-2
lines changed

test/extension/blaze/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
message(STATUS "Boost.GIL: Configuring tests in test/extension/blaze")
99
foreach(_name
1010
to_matrix
11-
)
11+
pixel_to_vector
12+
vector_to_pixel
13+
to_image)
1214
set(_test t_ext_blaze_${_name})
1315
set(_target test_ext_blaze_${_name})
1416

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#include <boost/core/lightweight_test.hpp>
2+
3+
#include <boost/gil/extension/blaze/blaze.hpp>
4+
5+
namespace gil = boost::gil;
6+
7+
void gray8_zero_to_vector()
8+
{
9+
gil::gray8_pixel_t p(0);
10+
auto v = gil::pixel_to_vector(p);
11+
BOOST_TEST_EQ(v[0], 0);
12+
}
13+
14+
void gray8_to_vector()
15+
{
16+
gil::gray8_pixel_t p(23);
17+
auto v = gil::pixel_to_vector(p);
18+
BOOST_TEST_EQ(v[0], 23);
19+
}
20+
21+
void rgb8_zero_to_vector()
22+
{
23+
gil::rgb8_pixel_t p(0, 0, 0);
24+
auto vector = gil::pixel_to_vector(p);
25+
BOOST_TEST_EQ(vector[0], 0);
26+
BOOST_TEST_EQ(vector[1], 0);
27+
BOOST_TEST_EQ(vector[2], 0);
28+
}
29+
30+
void rgb8_uniform_to_vector()
31+
{
32+
auto value = std::uint8_t(23);
33+
gil::rgb8_pixel_t p(value, value, value);
34+
auto vector = gil::pixel_to_vector(p);
35+
BOOST_TEST_EQ(vector[0], value);
36+
BOOST_TEST_EQ(vector[1], value);
37+
BOOST_TEST_EQ(vector[2], value);
38+
}
39+
40+
void rgb8_distinct_to_vector()
41+
{
42+
auto value0 = std::uint8_t(23);
43+
auto value1 = std::uint8_t(11);
44+
auto value2 = std::uint8_t(1);
45+
gil::rgb8_pixel_t p(value0, value1, value2);
46+
auto vector = gil::pixel_to_vector(p);
47+
BOOST_TEST_EQ(vector[0], value0);
48+
BOOST_TEST_EQ(vector[1], value1);
49+
BOOST_TEST_EQ(vector[2], value2);
50+
}
51+
52+
int main()
53+
{
54+
gray8_zero_to_vector();
55+
gray8_to_vector();
56+
rgb8_zero_to_vector();
57+
rgb8_uniform_to_vector();
58+
rgb8_distinct_to_vector();
59+
60+
return boost::report_errors();
61+
}

test/extension/blaze/to_image.cpp

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#include <boost/core/lightweight_test.hpp>
2+
3+
#include <boost/gil/algorithm.hpp>
4+
#include <boost/gil/extension/blaze/blaze.hpp>
5+
6+
namespace gil = boost::gil;
7+
8+
void matrix_to_gray8_uniform()
9+
{
10+
gil::gray8_image_t expected(16, 16, gil::gray8_pixel_t(13));
11+
blaze::DynamicMatrix<blaze::StaticVector<std::uint8_t, 1>> input(16, 16, {13});
12+
auto result = gil::to_image<gil::gray8_image_t>(input);
13+
14+
BOOST_TEST(gil::equal_pixels(gil::view(result), gil::view(expected)));
15+
}
16+
17+
void matrix_to_gray8_distinct()
18+
{
19+
blaze::DynamicMatrix<blaze::StaticVector<std::uint8_t, 1>> input(16, 16, {13});
20+
gil::gray8_image_t expected(16, 16, gil::gray8_pixel_t(13));
21+
auto view = gil::view(expected);
22+
input(0, 0)[0] = 0;
23+
input(1, 0)[0] = 1; // rows and cols are different for GIL vs Blaze
24+
25+
auto result = gil::to_image<gil::gray8_image_t>(input);
26+
view(0, 0)[0] = 0;
27+
view(0, 1)[0] = 1;
28+
29+
BOOST_TEST(gil::equal_pixels(gil::view(result), gil::view(expected)));
30+
}
31+
32+
void matrix_to_rgb8_uniform()
33+
{
34+
gil::rgb8_pixel_t default_pixel(1, 2, 3);
35+
gil::rgb8_image_t expected(16, 16, default_pixel);
36+
37+
blaze::StaticVector<std::uint8_t, 3> default_vector({1, 2, 3});
38+
blaze::DynamicMatrix<blaze::StaticVector<std::uint8_t, 3>> input(16, 16, default_vector);
39+
40+
auto result = gil::to_image<gil::rgb8_image_t>(input);
41+
BOOST_TEST(gil::equal_pixels(gil::view(result), gil::view(expected)));
42+
}
43+
44+
void matrix_to_rgb8_distinct()
45+
{
46+
gil::rgb8_pixel_t default_pixel(1, 2, 3);
47+
gil::rgb8_image_t expected(16, 16, default_pixel);
48+
auto view = gil::view(expected);
49+
view(0, 0) = gil::rgb8_pixel_t(10, 20, 30);
50+
view(1, 0) = gil::rgb8_pixel_t(50, 50, 50);
51+
52+
blaze::StaticVector<std::uint8_t, 3> default_vector({1, 2, 3});
53+
blaze::DynamicMatrix<blaze::StaticVector<std::uint8_t, 3>> input(16, 16, default_vector);
54+
input(0, 0) = {10, 20, 30};
55+
input(0, 1) = {50, 50, 50};
56+
57+
auto result = gil::to_image<gil::rgb8_image_t>(input);
58+
BOOST_TEST(gil::equal_pixels(gil::view(result), gil::view(expected)));
59+
}
60+
61+
int main()
62+
{
63+
matrix_to_gray8_uniform();
64+
matrix_to_gray8_distinct();
65+
matrix_to_rgb8_uniform();
66+
matrix_to_rgb8_distinct();
67+
68+
return boost::report_errors();
69+
}

test/extension/blaze/to_matrix.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,5 @@ int main()
6464
rgb8_to_matrix_uniform();
6565
rgb8_to_matrix_distinct();
6666

67-
6867
return boost::report_errors();
6968
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
#include <boost/core/lightweight_test.hpp>
2+
3+
#include <boost/gil/extension/blaze/blaze.hpp>
4+
5+
namespace gil = boost::gil;
6+
7+
void vector1d_zero_to_gray8()
8+
{
9+
blaze::StaticVector<std::uint8_t, 1> v({0});
10+
auto p = gil::vector_to_pixel<gil::gray8_pixel_t>(v);
11+
12+
BOOST_TEST_EQ(p[0], 0);
13+
}
14+
15+
void vector1d_to_gray8()
16+
{
17+
blaze::StaticVector<std::uint8_t, 1> v({23});
18+
auto p = gil::vector_to_pixel<gil::gray8_pixel_t>(v);
19+
20+
BOOST_TEST_EQ(p[0], 23);
21+
}
22+
23+
void vector3d_zero_to_rgb8()
24+
{
25+
blaze::StaticVector<std::uint8_t, 3> v({0, 0, 0});
26+
auto p = gil::vector_to_pixel<gil::gray8_pixel_t>(v);
27+
28+
BOOST_TEST_EQ(p[0], 0);
29+
BOOST_TEST_EQ(p[1], 0);
30+
BOOST_TEST_EQ(p[2], 0);
31+
}
32+
33+
void vector3d_uniform_to_rgb8()
34+
{
35+
std::uint8_t value = 23;
36+
blaze::StaticVector<std::uint8_t, 3> v({value, value, value});
37+
38+
auto p = gil::vector_to_pixel<gil::rgb8_pixel_t>(v);
39+
40+
BOOST_TEST_EQ(p[0], value);
41+
BOOST_TEST_EQ(p[1], value);
42+
BOOST_TEST_EQ(p[2], value);
43+
}
44+
45+
void vector3d_distinct_to_rgb8()
46+
{
47+
std::uint8_t value0 = 23;
48+
std::uint8_t value1 = 11;
49+
std::uint8_t value2 = 1;
50+
blaze::StaticVector<std::uint8_t, 3> v({value0, value1, value2});
51+
auto p = gil::vector_to_pixel<gil::rgb8_pixel_t>(v);
52+
53+
BOOST_TEST_EQ(p[0], value0);
54+
BOOST_TEST_EQ(p[1], value1);
55+
BOOST_TEST_EQ(p[2], value2);
56+
}
57+
58+
int main()
59+
{
60+
vector1d_zero_to_gray8();
61+
vector1d_to_gray8();
62+
vector3d_zero_to_rgb8();
63+
vector3d_uniform_to_rgb8();
64+
vector3d_distinct_to_rgb8();
65+
66+
return boost::report_errors();
67+
}

0 commit comments

Comments
 (0)