scenario_simulator_v2 C++ API
simulation
traffic_simulator
test
src
expect_eq_macros.hpp
Go to the documentation of this file.
1
// Copyright 2015 TIER IV, Inc. All rights reserved.
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#ifndef TRAFFIC_SIMULATOR__TEST__EXPECT_EQ_MACROS_HPP_
16
#define TRAFFIC_SIMULATOR__TEST__EXPECT_EQ_MACROS_HPP_
17
18
#include <gtest/gtest.h>
19
20
#include <geometry_msgs/msg/point.hpp>
21
#include <geometry_msgs/msg/vector3.hpp>
22
23
#define EXPECT_DECIMAL_EQ(DATA0, DATA1, TOLERANCE) \
24
EXPECT_TRUE(std::fabs(DATA0 - DATA1) <= std::fabs(TOLERANCE));
25
26
#define EXPECT_POINT_EQ(DATA0, DATA1) \
27
EXPECT_DOUBLE_EQ(DATA0.x, DATA1.x); \
28
EXPECT_DOUBLE_EQ(DATA0.y, DATA1.y); \
29
EXPECT_DOUBLE_EQ(DATA0.z, DATA1.z);
30
31
#define EXPECT_POINT_EQ_STREAM(DATA0, DATA1, STREAM_MESSAGE) \
32
EXPECT_DOUBLE_EQ(DATA0.x, DATA1.x) << STREAM_MESSAGE; \
33
EXPECT_DOUBLE_EQ(DATA0.y, DATA1.y) << STREAM_MESSAGE; \
34
EXPECT_DOUBLE_EQ(DATA0.z, DATA1.z) << STREAM_MESSAGE;
35
36
#define EXPECT_POINT_NEAR(DATA0, DATA1, EPS) \
37
EXPECT_NEAR(DATA0.x, DATA1.x, EPS); \
38
EXPECT_NEAR(DATA0.y, DATA1.y, EPS); \
39
EXPECT_NEAR(DATA0.z, DATA1.z, EPS);
40
41
#define EXPECT_POINT_NEAR_STREAM(DATA0, DATA1, EPS, STREAM_MESSAGE) \
42
EXPECT_NEAR(DATA0.x, DATA1.x, EPS) << STREAM_MESSAGE; \
43
EXPECT_NEAR(DATA0.y, DATA1.y, EPS) << STREAM_MESSAGE; \
44
EXPECT_NEAR(DATA0.z, DATA1.z, EPS) << STREAM_MESSAGE;
45
46
#define EXPECT_VECTOR3_EQ(DATA0, DATA1) \
47
EXPECT_DOUBLE_EQ(DATA0.x, DATA1.x); \
48
EXPECT_DOUBLE_EQ(DATA0.y, DATA1.y); \
49
EXPECT_DOUBLE_EQ(DATA0.z, DATA1.z);
50
51
#define EXPECT_VECTOR3_NEAR(DATA0, DATA1, EPS) \
52
EXPECT_NEAR(DATA0.x, DATA1.x, EPS); \
53
EXPECT_NEAR(DATA0.y, DATA1.y, EPS); \
54
EXPECT_NEAR(DATA0.z, DATA1.z, EPS);
55
56
#define EXPECT_QUATERNION_EQ(DATA0, DATA1) \
57
EXPECT_DOUBLE_EQ(DATA0.x, DATA1.x); \
58
EXPECT_DOUBLE_EQ(DATA0.y, DATA1.y); \
59
EXPECT_DOUBLE_EQ(DATA0.z, DATA1.z); \
60
EXPECT_DOUBLE_EQ(DATA0.w, DATA1.w);
61
62
#define EXPECT_QUATERNION_NEAR(DATA0, DATA1, EPS) \
63
EXPECT_NEAR(DATA0.x, DATA1.x, EPS); \
64
EXPECT_NEAR(DATA0.y, DATA1.y, EPS); \
65
EXPECT_NEAR(DATA0.z, DATA1.z, EPS); \
66
EXPECT_NEAR(DATA0.w, DATA1.w, EPS);
67
68
#define EXPECT_POSE_EQ(DATA0, DATA1) \
69
EXPECT_POINT_EQ(DATA0.position, DATA1.position); \
70
EXPECT_QUATERNION_EQ(DATA0.orientation, DATA1.orientation);
71
72
#define EXPECT_POSE_NEAR(DATA0, DATA1, EPS) \
73
EXPECT_POINT_NEAR(DATA0.position, DATA1.position, EPS); \
74
EXPECT_QUATERNION_NEAR(DATA0.orientation, DATA1.orientation, EPS);
75
76
#define EXPECT_LANELET_POSE_EQ(DATA0, DATA1) \
77
EXPECT_EQ(DATA0.lanelet_id, DATA1.lanelet_id); \
78
EXPECT_DOUBLE_EQ(DATA0.s, DATA1.s); \
79
EXPECT_DOUBLE_EQ(DATA0.offset, DATA1.offset); \
80
EXPECT_VECTOR3_EQ(DATA0.rpy, DATA1.rpy);
81
82
#define EXPECT_LANELET_POSE_NEAR(DATA0, DATA1, EPS) \
83
EXPECT_EQ(DATA0.lanelet_id, DATA1.lanelet_id); \
84
EXPECT_NEAR(DATA0.s, DATA1.s, EPS); \
85
EXPECT_NEAR(DATA0.offset, DATA1.offset, EPS); \
86
EXPECT_VECTOR3_NEAR(DATA0.rpy, DATA1.rpy, EPS);
87
88
#define EXPECT_TWIST_EQ(DATA0, DATA1) \
89
EXPECT_VECTOR3_EQ(DATA0.linear, DATA1.linear); \
90
EXPECT_VECTOR3_EQ(DATA0.angular, DATA1.angular);
91
92
#define EXPECT_ACCEL_EQ(DATA0, DATA1) \
93
EXPECT_VECTOR3_EQ(DATA0.linear, DATA1.linear); \
94
EXPECT_VECTOR3_EQ(DATA0.angular, DATA1.angular);
95
96
#define EXPECT_ACTION_STATUS_EQ(DATA0, DATA1) \
97
EXPECT_ACCEL_EQ(DATA0.accel, DATA1.accel); \
98
EXPECT_TWIST_EQ(DATA0.twist, DATA1.twist); \
99
EXPECT_STREQ(DATA0.current_action.c_str(), DATA1.current_action.c_str());
100
101
#define EXPECT_DETECTION_SENSOR_CONFIGURATION_EQ(DATA0, DATA1) \
102
EXPECT_STREQ(DATA0.entity().c_str(), DATA1.entity().c_str()); \
103
EXPECT_STREQ(DATA0.architecture_type().c_str(), DATA1.architecture_type().c_str()); \
104
EXPECT_DOUBLE_EQ(DATA0.update_duration(), DATA1.update_duration());
105
106
#define EXPECT_DYNAMIC_CONSTRAINTS_EQ(DATA0, DATA1) \
107
EXPECT_EQ(DATA0.max_speed, DATA1.max_speed); \
108
EXPECT_EQ(DATA0.max_acceleration, DATA1.max_acceleration); \
109
EXPECT_EQ(DATA0.max_deceleration, DATA1.max_deceleration); \
110
EXPECT_EQ(DATA0.max_acceleration_rate, DATA1.max_acceleration_rate); \
111
EXPECT_EQ(DATA0.max_deceleration_rate, DATA1.max_deceleration_rate);
112
113
#define EXPECT_LANE_CHANGE_ABSOLUTE_TARGET_EQ(DATA0, DATA1) \
114
EXPECT_EQ(DATA0.lanelet_id, DATA1.lanelet_id); \
115
EXPECT_DOUBLE_EQ(DATA0.offset, DATA1.offset);
116
117
#define EXPECT_LANE_CHANGE_RELATIVE_TARGET_EQ(DATA0, DATA1) \
118
EXPECT_EQ(DATA0.entity_name, DATA1.entity_name); \
119
EXPECT_EQ(DATA0.direction, DATA1.direction); \
120
EXPECT_EQ(DATA0.shift, DATA1.shift); \
121
EXPECT_DOUBLE_EQ(DATA0.offset, DATA1.offset);
122
123
#define EXPECT_LANE_CHANGE_CONSTRAINT_EQ(DATA0, DATA1) \
124
EXPECT_EQ(DATA0.type, DATA1.type); \
125
EXPECT_DOUBLE_EQ(DATA0.value, DATA1.value); \
126
EXPECT_EQ(DATA0.policy, DATA1.policy);
127
128
#define EXPECT_LANE_CHANGE_PARAMETER_EQ(DATA0, DATA1) \
129
EXPECT_LANE_CHANGE_ABSOLUTE_TARGET_EQ(DATA0.target, DATA1.target); \
130
EXPECT_EQ(DATA0.trajectory_shape, DATA1.trajectory_shape); \
131
EXPECT_LANE_CHANGE_CONSTRAINT_EQ(DATA0.constraint, DATA1.constraint);
132
133
#endif
// TRAFFIC_SIMULATOR__TEST__EXPECT_EQ_MACROS_HPP_
Generated by
1.9.1