test
src
service_adv_unadv.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2008, Willow Garage, Inc.
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
*
8
* * Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* * Neither the name of Willow Garage, Inc. nor the names of its
14
* contributors may be used to endorse or promote products derived from
15
* this software without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
* POSSIBILITY OF SUCH DAMAGE.
28
*/
29
30
/* Author: Brian Gerkey */
31
32
/*
33
* Advertise a service
34
*/
35
36
#include <gtest/gtest.h>
37
38
#include "
ros/ros.h
"
39
#include <test_roscpp/TestStringString.h>
40
41
42
static
int
g_argc
;
43
static
char
**
g_argv
;
44
45
class
ServiceAdvertiser
:
public
testing::Test
46
{
47
public
:
48
ros::NodeHandle
nh_
;
49
ros::ServiceServer
srv_
;
50
51
bool
advertised_
;
52
bool
failure_
;
53
54
bool
srvCallback
(test_roscpp::TestStringString::Request &,
55
test_roscpp::TestStringString::Response &)
56
{
57
ROS_INFO
(
"in callback"
);
58
if
(!
advertised_
)
59
{
60
ROS_INFO
(
"but not advertised!"
);
61
failure_
=
true
;
62
}
63
return
true
;
64
}
65
protected
:
66
ServiceAdvertiser
() {}
67
void
SetUp
()
68
{
69
failure_
=
false
;
70
advertised_
=
false
;
71
72
ASSERT_TRUE(
g_argc
== 1);
73
}
74
75
bool
adv
()
76
{
77
ROS_INFO
(
"advertising"
);
78
srv_
=
nh_
.
advertiseService
(
"service_adv"
, &
ServiceAdvertiser::srvCallback
,
this
);
79
ROS_INFO
(
"advertised"
);
80
return
srv_
;
81
}
82
bool
unadv
()
83
{
84
ROS_INFO
(
"unadvertising"
);
85
srv_
.
shutdown
();
86
ROS_INFO
(
"unadvertised"
);
87
return
true
;
88
}
89
};
90
91
TEST_F
(
ServiceAdvertiser
, advUnadv)
92
{
93
advertised_ =
true
;
94
ASSERT_TRUE(adv());
95
96
for
(
int
i=0;i<100;i++)
97
{
98
if
(advertised_)
99
{
100
ASSERT_TRUE(unadv());
101
advertised_ =
false
;
102
}
103
else
104
{
105
advertised_ =
true
;
106
ASSERT_TRUE(adv());
107
}
108
109
ros::WallDuration
(0.01).
sleep
();
110
}
111
112
if
(failure_)
113
FAIL();
114
else
115
SUCCEED();
116
}
117
118
int
119
main
(
int
argc,
char
** argv)
120
{
121
ros::init
(argc, argv,
"service_adv_unadv"
);
122
testing::InitGoogleTest(&argc, argv);
123
g_argc
= argc;
124
g_argv
= argv;
125
return
RUN_ALL_TESTS();
126
}
127
ros::WallDuration::sleep
bool sleep() const
g_argc
static int g_argc
Definition:
service_adv_unadv.cpp:42
ros::init
ROSCPP_DECL void init(const M_string &remappings, const std::string &name, uint32_t options=0)
ros.h
main
int main(int argc, char **argv)
Definition:
service_adv_unadv.cpp:119
ros::NodeHandle::advertiseService
ServiceServer advertiseService(AdvertiseServiceOptions &ops)
ServiceAdvertiser::srv_
ros::ServiceServer srv_
Definition:
service_adv_unadv.cpp:49
ServiceAdvertiser::advertised_
bool advertised_
Definition:
service_adv_unadv.cpp:51
ros::ServiceServer
ServiceAdvertiser::unadv
bool unadv()
Definition:
service_adv_unadv.cpp:82
g_argv
static char ** g_argv
Definition:
service_adv_unadv.cpp:43
ServiceAdvertiser::srvCallback
bool srvCallback(test_roscpp::TestStringString::Request &, test_roscpp::TestStringString::Response &)
Definition:
service_adv_unadv.cpp:54
ServiceAdvertiser
Definition:
service_adv_unadv.cpp:45
TEST_F
TEST_F(ServiceAdvertiser, advUnadv)
Definition:
service_adv_unadv.cpp:91
ServiceAdvertiser::adv
bool adv()
Definition:
service_adv_unadv.cpp:75
ServiceAdvertiser::failure_
bool failure_
Definition:
service_adv_unadv.cpp:52
ros::ServiceServer::shutdown
void shutdown()
ServiceAdvertiser::nh_
ros::NodeHandle nh_
Definition:
service_adv_unadv.cpp:48
ServiceAdvertiser::ServiceAdvertiser
ServiceAdvertiser()
Definition:
service_adv_unadv.cpp:66
ros::WallDuration
ROS_INFO
#define ROS_INFO(...)
ServiceAdvertiser::SetUp
void SetUp()
Definition:
service_adv_unadv.cpp:67
ros::NodeHandle
test_roscpp
Author(s): Morgan Quigley, Josh Faust, Brian Gerkey, Troy Straszheim, Dirk Thomas
, Jacob Perron
autogenerated on Sat Sep 14 2024 02:59:57