greenhouse/tests/test_roundtrip1.py

45 lines
1.3 KiB
Python
Raw Normal View History

2022-04-10 23:32:25 +02:00
# Copyright 2020-2022 Ternaris.
2021-08-06 09:39:55 +02:00
# SPDX-License-Identifier: Apache-2.0
"""Test full data roundtrip."""
from __future__ import annotations
from typing import TYPE_CHECKING
import pytest
from rosbags.rosbag1 import Reader, Writer
from rosbags.serde import cdr_to_ros1, deserialize_cdr, ros1_to_cdr, serialize_cdr
if TYPE_CHECKING:
from pathlib import Path
from typing import Optional
@pytest.mark.parametrize('fmt', [None, Writer.CompressionFormat.BZ2, Writer.CompressionFormat.LZ4])
2021-11-25 14:26:17 +01:00
def test_roundtrip(tmp_path: Path, fmt: Optional[Writer.CompressionFormat]) -> None:
2021-08-06 09:39:55 +02:00
"""Test full data roundtrip."""
class Foo: # pylint: disable=too-few-public-methods
"""Dummy class."""
data = 1.25
path = tmp_path / 'test.bag'
wbag = Writer(path)
if fmt:
wbag.set_compression(fmt)
with wbag:
msgtype = 'std_msgs/msg/Float64'
conn = wbag.add_connection('/test', msgtype)
wbag.write(conn, 42, cdr_to_ros1(serialize_cdr(Foo, msgtype), msgtype))
rbag = Reader(path)
with rbag:
gen = rbag.messages()
connection, _, raw = next(gen)
msg = deserialize_cdr(ros1_to_cdr(raw, connection.msgtype), connection.msgtype)
2022-04-11 00:07:53 +02:00
assert getattr(msg, 'data', None) == Foo.data
2021-08-06 09:39:55 +02:00
with pytest.raises(StopIteration):
next(gen)