CARLA
Loading...
Searching...
No Matches
test_vehicle_telemetry_data.cpp
Go to the documentation of this file.
1// Copyright (c) 2026 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#include "test.h"
8
9#include <carla/MsgPack.h>
12
13#include <vector>
14
17
18// VehicleTelemetryData and WheelTelemetryData are POD-style RPC types crossing
19// the simulator/client boundary via MsgPack. These tests pin two contracts:
20// 1) default construction zero-initializes every field, so a fresh instance
21// is safe to inspect or send;
22// 2) every field round-trips through MsgPack pack/unpack unchanged, including
23// the nested wheels vector.
24
25TEST(WheelTelemetryData, default_construction_zero_initialises_all_fields) {
26 WheelTelemetryData wheel{};
27 EXPECT_EQ(wheel.lat_slip, 0.0f);
28 EXPECT_EQ(wheel.long_slip, 0.0f);
29 EXPECT_EQ(wheel.omega, 0.0f);
30}
31
32TEST(WheelTelemetryData, msgpack_roundtrip_preserves_every_field) {
33 WheelTelemetryData wheel{1.25f, 0.42f, 31.7f};
34
35 auto buffer = carla::MsgPack::Pack(wheel);
36 auto restored = carla::MsgPack::UnPack<WheelTelemetryData>(buffer);
37
38 EXPECT_EQ(restored, wheel);
39}
40
41TEST(VehicleTelemetryData, default_construction_zero_initialises_all_fields) {
42 VehicleTelemetryData telemetry{};
43 EXPECT_EQ(telemetry.speed, 0.0f);
44 EXPECT_EQ(telemetry.steer, 0.0f);
45 EXPECT_EQ(telemetry.throttle, 0.0f);
46 EXPECT_EQ(telemetry.brake, 0.0f);
47 EXPECT_EQ(telemetry.engine_rpm, 0.0f);
48 EXPECT_EQ(telemetry.gear, 0);
49 EXPECT_TRUE(telemetry.wheels.empty());
50}
51
52TEST(VehicleTelemetryData, msgpack_roundtrip_preserves_vehicle_and_wheel_fields) {
53 std::vector<WheelTelemetryData> wheels{
54 WheelTelemetryData{1.0f, 0.1f, 25.0f},
55 WheelTelemetryData{2.0f, 0.2f, 26.0f},
56 WheelTelemetryData{3.0f, 0.3f, 27.0f}};
57
58 VehicleTelemetryData telemetry{
59 14.5f, 0.12f, 0.8f, 0.0f, 3500.0f, 4, std::move(wheels)};
60
61 auto buffer = carla::MsgPack::Pack(telemetry);
62 auto restored = carla::MsgPack::UnPack<VehicleTelemetryData>(buffer);
63
64 EXPECT_EQ(restored.speed, telemetry.speed);
65 EXPECT_EQ(restored.steer, telemetry.steer);
66 EXPECT_EQ(restored.throttle, telemetry.throttle);
67 EXPECT_EQ(restored.brake, telemetry.brake);
68 EXPECT_EQ(restored.engine_rpm, telemetry.engine_rpm);
69 EXPECT_EQ(restored.gear, telemetry.gear);
70 ASSERT_EQ(restored.wheels.size(), telemetry.wheels.size());
71 for (size_t i = 0; i < telemetry.wheels.size(); ++i) {
72 EXPECT_EQ(restored.wheels[i], telemetry.wheels[i]);
73 }
74 EXPECT_EQ(restored, telemetry);
75}
static Buffer Pack(const T &obj)
Definition MsgPack.h:19
TEST(WheelTelemetryData, default_construction_zero_initialises_all_fields)