test
test_user_filter.cpp
Go to the documentation of this file.
1
/****************************************************************************
2
*
3
* fkie_message_filters
4
* Copyright © 2018-2020 Fraunhofer FKIE
5
* Author: Timo Röhling
6
*
7
* Licensed under the Apache License, Version 2.0 (the "License");
8
* you may not use this file except in compliance with the License.
9
* You may obtain a copy of the License at
10
*
11
* http://www.apache.org/licenses/LICENSE-2.0
12
*
13
* Unless required by applicable law or agreed to in writing, software
14
* distributed under the License is distributed on an "AS IS" BASIS,
15
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
* See the License for the specific language governing permissions and
17
* limitations under the License.
18
*
19
****************************************************************************/
20
#include "
test.h
"
21
#include <
fkie_message_filters/user_filter.h
>
22
#include <
fkie_message_filters/user_source.h
>
23
#include <
fkie_message_filters/simple_user_filter.h
>
24
25
TEST
(
fkie_message_filters
, UserFilter)
26
{
27
using
Source =
mf::UserSource<int_M>
;
28
using
Sink =
mf::SimpleUserFilter<double_M>
;
29
using
Filter
=
mf::UserFilter<Source::Output, Sink::Input>
;
30
31
std::size_t callback_counts = 0;
32
Source src;
33
Filter
flt;
34
Sink snk;
35
mf::chain
(src, flt, snk);
36
flt.set_processing_function(
37
[](
const
int_M
& i,
const
Filter::CallbackFunction&
f
)
38
{
39
if
(i == 42)
f
(
double_M
(3.14));
40
}
41
);
42
snk.set_processing_function(
43
[&](
const
double_M
&
d
) ->
bool
44
{
45
++callback_counts;
46
if
(
d
!= 3.14)
throw
std::domain_error(
"d != 3.14"
);
47
return
true
;
48
}
49
);
50
// Check that 42 is passed through and -1 is discarded
51
src(
int_M
(42));
52
src(
int_M
(-1));
53
ASSERT_EQ(1u, callback_counts);
54
}
fkie_message_filters
Definition:
buffer.h:33
fkie_message_filters::chain
void chain(Filter1 &flt1, Filter2 &flt2, MoreFilters &... filters) noexcept
Convenience function to chain multiple filters.
Definition:
filter_impl.h:71
Filter
NotDefaultConstructable
Definition:
test.h:35
simple_user_filter.h
fkie_message_filters::UserSource
Manually operated data source.
Definition:
user_source.h:55
user_filter.h
fkie_message_filters::SimpleUserFilter
Simplified filter with user-defined callback function.
Definition:
simple_user_filter.h:56
double_M
NotDefaultConstructable< double > double_M
Definition:
test.h:48
f
f
int_M
NotDefaultConstructable< int > int_M
Definition:
test.h:47
d
d
test.h
TEST
TEST(fkie_message_filters, UserFilter)
Definition:
test_user_filter.cpp:25
user_source.h
fkie_message_filters::UserFilter
Definition:
user_filter.h:49
fkie_message_filters
Author(s): Timo Röhling
autogenerated on Wed Mar 2 2022 00:18:57