Skip to content

Commit 060b66c

Browse files
committed
Add more tests
Add more tests
1 parent 91e052b commit 060b66c

File tree

4 files changed

+105
-45
lines changed

4 files changed

+105
-45
lines changed

test/extension/numeric/convolve.cpp

Lines changed: 47 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -121,30 +121,56 @@ struct test_image_5x5_kernel_1x9_boundary_extend_reflection
121121
using channel_t = typename gil::channel_type<pixel_t>::type;
122122
auto img = fixture::generate_image<image_t>(5, 5, fixture::random_value<channel_t>{});
123123
auto img_view = gil::view(img);
124-
image_t img_out(img), img_expected_row(img);
125-
unsigned int kernel_shift_offset = 2;
126-
127-
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_row),
128-
kernel_shift_offset);
129-
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_row),
124+
image_t img_out_up_left_offset(img), img_expected_row_up_offset(img);
125+
image_t img_expected_col_left_offset(img), img_out_down_right_offset(img);
126+
image_t img_expected_row_down_offset(img), img_expected_col_right_offset(img);
127+
int kernel_shift_up_left_offset = 2, kernel_shift_down_right_offset = -2;
128+
129+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_row_up_offset),
130+
kernel_shift_up_left_offset);
131+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_row_up_offset),
130132
-1, 0, 1, img_view.height(), 1);
131-
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_row),
133+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_row_up_offset),
132134
1, 0, 0, img_view.height(), 2);
133135

134-
image_t img_expected_col(img);
135-
136-
fixture::col_conv1D_offset_img_generator(gil::view(img_expected_row),
137-
gil::view(img_expected_col), kernel_shift_offset);
138-
fixture::col_conv1D_offset_img_generator(gil::view(img_expected_row),
139-
gil::view(img_expected_col), -1, 1, 0, 1, img_view.width());
140-
fixture::col_conv1D_offset_img_generator(gil::view(img_expected_row),
141-
gil::view(img_expected_col), 1, 0, 0, 2, img_view.width());
142-
143-
auto const kernel = fixture::create_kernel<channel_t>({0, 0, 0, 0, 0, 0, 1, 0, 0});
144-
gil::detail::convolve_1d<pixel_t>(gil::const_view(img), kernel, gil::view(img_out),
145-
gil::boundary_option::extend_reflection);
146-
147-
BOOST_TEST(gil::equal_pixels(gil::const_view(img_out), gil::const_view(img_expected_col)));
136+
fixture::col_conv1D_offset_img_generator(gil::view(img_expected_row_up_offset),
137+
gil::view(img_expected_col_left_offset), kernel_shift_up_left_offset);
138+
fixture::col_conv1D_offset_img_generator(gil::view(img_expected_row_up_offset),
139+
gil::view(img_expected_col_left_offset), -1, 1, 0, 1, img_view.width());
140+
fixture::col_conv1D_offset_img_generator(gil::view(img_expected_row_up_offset),
141+
gil::view(img_expected_col_left_offset), 1, 0, 0, 2, img_view.width());
142+
143+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_row_down_offset),
144+
kernel_shift_down_right_offset, 0, 2, img_view.height(), img_view.width());
145+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_row_down_offset),
146+
-1, 0, img_view.width() - 1, img_view.height(), img_view.width());
147+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_row_down_offset),
148+
1, 0, img_view.width() - 2, img_view.height(), img_view.width());
149+
150+
fixture::col_conv1D_offset_img_generator(gil::view(img_expected_row_down_offset),
151+
gil::view(img_expected_col_right_offset), kernel_shift_down_right_offset, 2, 0,
152+
img_view.height(), img_view.width());
153+
fixture::col_conv1D_offset_img_generator(gil::view(img_expected_row_down_offset),
154+
gil::view(img_expected_col_right_offset), -1, img_view.height() - 1, 0,
155+
img_view.height(), img_view.width());
156+
fixture::col_conv1D_offset_img_generator(gil::view(img_expected_row_down_offset),
157+
gil::view(img_expected_col_right_offset), 1, img_view.height() - 2, 0,
158+
img_view.height(), img_view.width());
159+
160+
auto const kernel_up_left_offset = fixture::create_kernel<channel_t>(
161+
{0, 0, 0, 0, 0, 0, 1, 0, 0});
162+
gil::detail::convolve_1d<pixel_t>(gil::const_view(img), kernel_up_left_offset,
163+
gil::view(img_out_up_left_offset), gil::boundary_option::extend_reflection);
164+
165+
auto const kernel_down_right_offset = fixture::create_kernel<channel_t>(
166+
{0, 0, 1, 0, 0, 0, 0, 0, 0});
167+
gil::detail::convolve_1d<pixel_t>(gil::const_view(img), kernel_down_right_offset,
168+
gil::view(img_out_down_right_offset), gil::boundary_option::extend_reflection);
169+
170+
BOOST_TEST(gil::equal_pixels(gil::const_view(img_out_up_left_offset),
171+
gil::const_view(img_expected_col_left_offset)));
172+
BOOST_TEST(gil::equal_pixels(gil::const_view(img_out_down_right_offset),
173+
gil::const_view(img_expected_col_right_offset)));
148174
}
149175
static void run()
150176
{

test/extension/numeric/convolve_cols.cpp

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,21 +75,38 @@ struct test_image_5x5_kernel_1x9_boundary_extend_reflection
7575
using channel_t = typename gil::channel_type<pixel_t>::type;
7676
auto img = fixture::generate_image<image_t>(5, 5, fixture::random_value<channel_t>{});
7777
auto img_view = gil::view(img);
78-
image_t img_out(img), img_expected(img);
79-
unsigned int kernel_shift_offset = 2;
78+
image_t img_out_left_offset(img), img_expected_left_offset(img);
79+
image_t img_out_right_offset(img), img_expected_right_offset(img);
80+
int kernel_shift_left_offset = 2, kernel_shift_right_offset = -2;
8081

81-
fixture::col_conv1D_offset_img_generator(img_view, gil::view(img_expected),
82-
kernel_shift_offset);
83-
fixture::col_conv1D_offset_img_generator(img_view, gil::view(img_expected),
82+
fixture::col_conv1D_offset_img_generator(img_view, gil::view(img_expected_left_offset),
83+
kernel_shift_left_offset);
84+
fixture::col_conv1D_offset_img_generator(img_view, gil::view(img_expected_left_offset),
8485
-1, 1, 0, 1, img_view.width());
85-
fixture::col_conv1D_offset_img_generator(img_view, gil::view(img_expected),
86+
fixture::col_conv1D_offset_img_generator(img_view, gil::view(img_expected_left_offset),
8687
1, 0, 0, 2, img_view.width());
8788

88-
auto const kernel = fixture::create_kernel<channel_t>({0, 0, 0, 0, 0, 0, 1, 0, 0});
89-
gil::convolve_cols<pixel_t>(gil::const_view(img), kernel, gil::view(img_out),
90-
gil::boundary_option::extend_reflection);
91-
92-
BOOST_TEST(gil::equal_pixels(gil::const_view(img_out), gil::const_view(img_expected)));
89+
fixture::col_conv1D_offset_img_generator(img_view, gil::view(img_expected_right_offset),
90+
kernel_shift_right_offset, 2, 0, img_view.height(), img_view.width());
91+
fixture::col_conv1D_offset_img_generator(img_view, gil::view(img_expected_right_offset),
92+
-1, img_view.height() - 1, 0, img_view.height(), img_view.width());
93+
fixture::col_conv1D_offset_img_generator(img_view, gil::view(img_expected_right_offset),
94+
1, img_view.height() - 2, 0, img_view.height(), img_view.width());
95+
96+
auto const kernel_left_offset = fixture::create_kernel<channel_t>(
97+
{0, 0, 0, 0, 0, 0, 1, 0, 0});
98+
gil::convolve_cols<pixel_t>(gil::const_view(img), kernel_left_offset,
99+
gil::view(img_out_left_offset), gil::boundary_option::extend_reflection);
100+
101+
auto const kernel_right_offset = fixture::create_kernel<channel_t>(
102+
{0, 0, 1, 0, 0, 0, 0, 0, 0});
103+
gil::convolve_cols<pixel_t>(gil::const_view(img), kernel_right_offset,
104+
gil::view(img_out_right_offset), gil::boundary_option::extend_reflection);
105+
106+
BOOST_TEST(gil::equal_pixels(gil::const_view(img_out_left_offset),
107+
gil::const_view(img_expected_left_offset)));
108+
BOOST_TEST(gil::equal_pixels(gil::const_view(img_out_right_offset),
109+
gil::const_view(img_expected_right_offset)));
93110
}
94111
static void run()
95112
{

test/extension/numeric/convolve_rows.cpp

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,21 +75,38 @@ struct test_image_5x5_kernel_1x9_boundary_extend_reflection
7575
using channel_t = typename gil::channel_type<pixel_t>::type;
7676
auto img = fixture::generate_image<image_t>(5, 5, fixture::random_value<channel_t>{});
7777
auto img_view = gil::view(img);
78-
image_t img_out(img), img_expected(img);
79-
unsigned int kernel_shift_offset = 2;
78+
image_t img_out_up_offset(img), img_expected_up_offset(img);
79+
image_t img_out_down_offset(img), img_expected_down_offset(img);
80+
int kernel_shift_up_offset = 2, kernel_shift_down_offset = -2;
8081

81-
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected),
82-
kernel_shift_offset);
83-
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected),
82+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_up_offset),
83+
kernel_shift_up_offset);
84+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_up_offset),
8485
-1, 0, 1, img_view.height(), 1);
85-
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected),
86+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_up_offset),
8687
1, 0, 0, img_view.height(), 2);
8788

88-
auto const kernel = fixture::create_kernel<channel_t>({0, 0, 0, 0, 0, 0, 1, 0, 0});
89-
gil::convolve_rows<pixel_t>(gil::const_view(img), kernel, gil::view(img_out),
90-
gil::boundary_option::extend_reflection);
91-
92-
BOOST_TEST(gil::equal_pixels(gil::const_view(img_out), gil::const_view(img_expected)));
89+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_down_offset),
90+
kernel_shift_down_offset, 0, 2, img_view.height(), img_view.width());
91+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_down_offset),
92+
-1, 0, img_view.width() - 1, img_view.height(), img_view.width());
93+
fixture::row_conv1D_offset_img_generator(img_view, gil::view(img_expected_down_offset),
94+
1, 0, img_view.width() - 2, img_view.height(), img_view.width());
95+
96+
auto const kernel_up_offset = fixture::create_kernel<channel_t>(
97+
{0, 0, 0, 0, 0, 0, 1, 0, 0});
98+
gil::convolve_rows<pixel_t>(gil::const_view(img), kernel_up_offset,
99+
gil::view(img_out_up_offset), gil::boundary_option::extend_reflection);
100+
101+
auto const kernel_down_offset = fixture::create_kernel<channel_t>(
102+
{0, 0, 1, 0, 0, 0, 0, 0, 0});
103+
gil::convolve_rows<pixel_t>(gil::const_view(img), kernel_down_offset,
104+
gil::view(img_out_down_offset), gil::boundary_option::extend_reflection);
105+
106+
BOOST_TEST(gil::equal_pixels(gil::const_view(img_out_up_offset),
107+
gil::const_view(img_expected_up_offset)));
108+
BOOST_TEST(gil::equal_pixels(gil::const_view(img_out_down_offset),
109+
gil::const_view(img_expected_down_offset)));
93110
}
94111
static void run()
95112
{

test/extension/numeric/test_fixture.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ auto create_kernel(std::initializer_list<T> const& values)
2929
}
3030

3131
// Adds an offset similar to 1D row convolution with kernel {0, 0, 0, 0, 0, 0, 1, 0, 0}
32-
// having its anchor point at 5th element and boundary option as "extend_zero".
32+
// (for offset = 2) having its anchor point at 5th element and boundary option as "extend_zero".
3333
template <typename SrcView, typename DstView>
3434
void row_conv1D_offset_img_generator(SrcView src_view, DstView dst_view, int const offset,
3535
std::ptrdiff_t start_row = 0, std::ptrdiff_t start_col = 0, std::ptrdiff_t end_row = -1,
@@ -56,7 +56,7 @@ void row_conv1D_offset_img_generator(SrcView src_view, DstView dst_view, int con
5656
}
5757

5858
// Adds an offset similar to 1D column convolution with kernel {0, 0, 0, 0, 0, 0, 1, 0, 0}
59-
// having its anchor point at 5th element and boundary option as "extend_zero".
59+
// (for offset = 2) having its anchor point at 5th element and boundary option as "extend_zero".
6060
template <typename SrcView, typename DstView>
6161
void col_conv1D_offset_img_generator(SrcView src_view, DstView dst_view, int const offset,
6262
std::ptrdiff_t start_row = 0, std::ptrdiff_t start_col = 0, std::ptrdiff_t end_row = -1,

0 commit comments

Comments
 (0)