forked from felixdivo/ros2-easy-test
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_actions.py
35 lines (26 loc) · 1.22 KB
/
test_actions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""Tests that actions can be checked correctly."""
from action_msgs.msg import GoalStatus
from example_interfaces.action import Fibonacci
from rclpy.action.client import ClientGoalHandle
# What we are testing
from ros2_easy_test import ROS2TestEnvironment, with_single_node
# Module under test and interfaces
from .example_nodes.minimal_action_server_with_context import MinimalActionServerWithContext
@with_single_node(MinimalActionServerWithContext)
def test_fibonacci_action(env: ROS2TestEnvironment) -> None:
"""Test action."""
goal_handle, feedbacks, result_response = env.send_action_goal_and_wait_for_result(
name="fibonacci", goal_msg=Fibonacci.Goal(order=4)
)
assert isinstance(goal_handle, ClientGoalHandle)
assert goal_handle.accepted is True
assert goal_handle.status == GoalStatus.STATUS_SUCCEEDED
assert isinstance(feedbacks, list)
assert len(feedbacks) == 3
assert feedbacks == [
Fibonacci.Feedback(sequence=[0, 1, 1]),
Fibonacci.Feedback(sequence=[0, 1, 1, 2]),
Fibonacci.Feedback(sequence=[0, 1, 1, 2, 3]),
]
assert result_response.status == GoalStatus.STATUS_SUCCEEDED
assert result_response.result == Fibonacci.Result(sequence=[0, 1, 1, 2, 3])