31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
"""Exercise our service requests with the installed Jazzy message schema."""
|
|
from types import SimpleNamespace
|
|
from unittest.mock import Mock
|
|
|
|
import pytest
|
|
|
|
from iiwa_utils import object_spawner
|
|
|
|
|
|
@pytest.mark.parametrize('success,completed', [(True, True), (False, True), (True, False)])
|
|
def test_service_schema_and_failure_stop(monkeypatch, success, completed):
|
|
node = Mock()
|
|
node.declare_parameter.side_effect = [SimpleNamespace(value='{}'),
|
|
SimpleNamespace(value='0 0 0'),
|
|
SimpleNamespace(value='0 0 1 0')]
|
|
monkeypatch.setattr(object_spawner, 'build_objects', lambda *args: ['Solid {}', 'Solid {}'])
|
|
monkeypatch.setattr(object_spawner.rclpy, 'spin_until_future_complete', lambda *a, **kw: None)
|
|
client = node.create_client.return_value
|
|
client.wait_for_service.return_value = True
|
|
future = client.call_async.return_value
|
|
future.done.return_value = completed
|
|
future.result.return_value = SimpleNamespace(success=success)
|
|
if success and completed:
|
|
object_spawner.spawn_objects(node)
|
|
assert client.call_async.call_count == 2
|
|
assert client.call_async.call_args.args[0].data == 'Solid {}'
|
|
else:
|
|
with pytest.raises(RuntimeError):
|
|
object_spawner.spawn_objects(node)
|
|
assert client.call_async.call_count == 1
|