1 #include <gtest/gtest.h>
9 int station_id =
randomInt(cam_msgs::StationID::MIN, cam_msgs::StationID::MAX);
10 int protocol_version =
11 randomInt(cam_msgs::ItsPduHeader::PROTOCOL_VERSION_MIN, cam_msgs::ItsPduHeader::PROTOCOL_VERSION_MAX);
13 EXPECT_EQ(cam_msgs::ItsPduHeader::MESSAGE_ID_CAM, cam.header.message_id);
14 EXPECT_EQ(protocol_version, cam.header.protocol_version);
22 uint64_t t_2007 = ((uint64_t)1167609600) * 1e9;
23 cam_msgs::TimestampIts t_its;
26 EXPECT_EQ(94694401000, t_its.value);
29 cam_msgs::TimestampIts t_its2;
30 uint64_t t_2007_off = t_2007 + 5 * 1e9;
32 EXPECT_EQ(94694401000,
41 int stationType_val =
randomInt(cam_msgs::StationType::MIN, cam_msgs::StationType::MAX);
66 EXPECT_NEAR(291827.02, utm.point.x, 1e-1);
67 EXPECT_NEAR(5630349.72, utm.point.y, 1e-1);
68 EXPECT_EQ(altitude, utm.point.z);
70 EXPECT_EQ(
true, northp);
82 std::array<double, 4> covariance_matrix = {
randomDouble(1.0, 100.0), 0.0,
85 covariance_matrix[3] += covariance_matrix[0];
88 EXPECT_NEAR(covariance_matrix[3], std::pow( cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse.semi_major_confidence.value*0.01 /
etsi_its_msgs::TWO_D_GAUSSIAN_FACTOR, 2), 1e-1);
89 EXPECT_NEAR(covariance_matrix[0], std::pow( cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse.semi_minor_confidence.value*0.01 /
etsi_its_msgs::TWO_D_GAUSSIAN_FACTOR, 2), 1e-1);
90 double expected_heading = heading_val + 90.0;
92 expected_heading = std::fmod(expected_heading + 180, 180);
93 while (expected_heading < 0) {
94 expected_heading += 180;
96 while (expected_heading >= 180) {
97 expected_heading -= 180;
99 EXPECT_NEAR(expected_heading, cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse.semi_major_orientation.value/10.0, 1e-1);
101 EXPECT_NEAR(covariance_matrix[0], cov_get[0], 1e-1);
102 EXPECT_NEAR(covariance_matrix[1], cov_get[1], 1e-1);
103 EXPECT_NEAR(covariance_matrix[2], cov_get[2], 1e-1);
104 EXPECT_NEAR(covariance_matrix[3], cov_get[3], 1e-1);
109 std::array<double, 4> covariance_matrix_rotated = {
110 covariance_matrix[0] * std::cos(phi) * std::cos(phi) +
111 covariance_matrix[3] * std::sin(phi) * std::sin(phi),
112 (covariance_matrix[0] - covariance_matrix[3]) * std::cos(phi) * std::sin(phi),
113 (covariance_matrix[0] - covariance_matrix[3]) * std::cos(phi) * std::sin(phi),
114 covariance_matrix[0] * std::sin(phi) * std::sin(phi) +
115 covariance_matrix[3] * std::cos(phi) * std::cos(phi)
119 EXPECT_NEAR(covariance_matrix[3], std::pow( cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse.semi_major_confidence.value*0.01 /
etsi_its_msgs::TWO_D_GAUSSIAN_FACTOR, 2), 1e-1);
120 EXPECT_NEAR(covariance_matrix[0], std::pow( cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse.semi_minor_confidence.value*0.01 /
etsi_its_msgs::TWO_D_GAUSSIAN_FACTOR, 2), 1e-1);
121 expected_heading = heading_val - phi * 180.0 / M_PI + 90.0;
123 expected_heading = std::fmod(expected_heading + 180, 180);
124 while (expected_heading < 0) {
125 expected_heading += 180;
127 while (expected_heading >= 180) {
128 expected_heading -= 180;
130 EXPECT_NEAR(expected_heading, cam.cam.cam_parameters.basic_container.reference_position.position_confidence_ellipse.semi_major_orientation.value/10.0, 1e-1);
132 EXPECT_NEAR(covariance_matrix_rotated[0], cov_get_rotated[0], 1e-1);
133 EXPECT_NEAR(covariance_matrix_rotated[1], cov_get_rotated[1], 1e-1);
134 EXPECT_NEAR(covariance_matrix_rotated[2], cov_get_rotated[2], 1e-1);
135 EXPECT_NEAR(covariance_matrix_rotated[3], cov_get_rotated[3], 1e-1);
140 EXPECT_NEAR(covariance_matrix_rotated[0], cov_get_rotated[0], 1e-1);
141 EXPECT_NEAR(covariance_matrix_rotated[1], cov_get_rotated[1], 1e-1);
142 EXPECT_NEAR(covariance_matrix_rotated[2], cov_get_rotated[2], 1e-1);
143 EXPECT_NEAR(covariance_matrix_rotated[3], cov_get_rotated[3], 1e-1);
168 std::vector<bool> exterior_lights(cam_msgs::ExteriorLights::SIZE_BITS);
169 for (
int i = 0; i < cam_msgs::ExteriorLights::SIZE_BITS; i++) {
172 cam.cam.cam_parameters.low_frequency_container_is_present =
true;
173 cam.cam.cam_parameters.low_frequency_container.choice =
174 cam_msgs::LowFrequencyContainer::CHOICE_BASIC_VEHICLE_CONTAINER_LOW_FREQUENCY;