mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-16 21:13:36 +08:00
ADSB: improve readability of unit tests
Signed-off-by: Silvan Fuhrer <silvan@auterion.com>
This commit is contained in:
@@ -4,7 +4,6 @@
|
||||
|
||||
#include "AdsbConflictTest.h"
|
||||
|
||||
|
||||
class TestAdsbConflict : public AdsbConflict
|
||||
{
|
||||
public:
|
||||
@@ -25,8 +24,6 @@ public:
|
||||
|
||||
TEST_F(AdsbConflictTest, detectTrafficConflict)
|
||||
{
|
||||
|
||||
|
||||
int collision_time_threshold = 60;
|
||||
|
||||
float crosstrack_separation = 500.0f;
|
||||
@@ -42,19 +39,15 @@ TEST_F(AdsbConflictTest, detectTrafficConflict)
|
||||
|
||||
uint32_t traffic_dataset_size = sizeof(traffic_dataset) / sizeof(traffic_dataset[0]);
|
||||
|
||||
|
||||
TestAdsbConflict adsb_conflict;
|
||||
|
||||
adsb_conflict.set_conflict_detection_params(crosstrack_separation, vertical_separation, collision_time_threshold, 1);
|
||||
|
||||
for (uint32_t i = 0; i < traffic_dataset_size; i++) {
|
||||
|
||||
|
||||
//printf("---------------%d--------------\n", i);
|
||||
|
||||
struct traffic_data_s traffic = traffic_dataset[i];
|
||||
|
||||
|
||||
// GIVEN traffic dataset (which should result in conflict)
|
||||
adsb_conflict._transponder_report.lat = traffic.lat_traffic;
|
||||
adsb_conflict._transponder_report.lon = traffic.lon_traffic;
|
||||
adsb_conflict._transponder_report.altitude = traffic.alt_traffic;
|
||||
@@ -62,22 +55,17 @@ TEST_F(AdsbConflictTest, detectTrafficConflict)
|
||||
adsb_conflict._transponder_report.hor_velocity = traffic.vxy_traffic;
|
||||
adsb_conflict._transponder_report.ver_velocity = traffic.vz_traffic;
|
||||
|
||||
// WHEN detect traffic conflict is called
|
||||
adsb_conflict.detect_traffic_conflict(lat_now, lon_now, alt_now, vx_now, vy_now, vz_now);
|
||||
|
||||
//printf("conflict_detected %d \n", adsb_conflict._conflict_detected);
|
||||
|
||||
//printf("------------------------------\n");
|
||||
//printf("------------------------------\n \n");
|
||||
|
||||
// THEN expect conflict to be detected
|
||||
EXPECT_TRUE(adsb_conflict._conflict_detected == traffic.in_conflict);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
TEST_F(AdsbConflictTest, trafficAlerts)
|
||||
{
|
||||
|
||||
struct traffic_buffer_s used_buffer;
|
||||
used_buffer.icao_address.push_back(2345);
|
||||
used_buffer.icao_address.push_back(1234);
|
||||
@@ -116,84 +104,98 @@ TEST_F(AdsbConflictTest, trafficAlerts)
|
||||
full_buffer.timestamp.push_back(1000_s);
|
||||
full_buffer.timestamp.push_back(58943_s);
|
||||
|
||||
|
||||
|
||||
struct traffic_buffer_s empty_buffer = {};
|
||||
|
||||
|
||||
TestAdsbConflict adsb_conflict;
|
||||
|
||||
// GIVEN used buffer
|
||||
adsb_conflict.set_traffic_buffer(used_buffer);
|
||||
|
||||
// WHEN no conflict detected
|
||||
bool conflict_detected = false;
|
||||
hrt_abstime now = 0_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 00001;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect no conflict
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::NO_CONFLICT);
|
||||
|
||||
// GIVEN conflict detected
|
||||
conflict_detected = true;
|
||||
now = 1_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 9876;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect conflict to be added to buffer
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::ADD_CONFLICT);
|
||||
|
||||
// GIVEN empty buffer
|
||||
adsb_conflict.set_traffic_buffer(empty_buffer);
|
||||
|
||||
// WHEN conflict detected
|
||||
conflict_detected = true;
|
||||
now = 0_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 9876;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect conflict to be added to buffer
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::ADD_CONFLICT);
|
||||
|
||||
// GIVEN full buffer
|
||||
adsb_conflict.set_traffic_buffer(full_buffer);
|
||||
|
||||
// WHEN conflict detected
|
||||
conflict_detected = true;
|
||||
now = 1_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 7777;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect buffer full
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::BUFFER_FULL);
|
||||
|
||||
// WHEN conflict set to false again
|
||||
conflict_detected = false;
|
||||
now = 2_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 7777;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect no conflict message
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::NO_CONFLICT);
|
||||
|
||||
// WHEN existing conflict is set to false
|
||||
conflict_detected = false;
|
||||
now = 3_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 8685;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect conflict to be removed from buffer
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::REMOVE_OLD_CONFLICT);
|
||||
|
||||
// GIVEN used buffer
|
||||
adsb_conflict.set_traffic_buffer(used_buffer);
|
||||
|
||||
// WHEN conflict is set to false again
|
||||
conflict_detected = false;
|
||||
now = 0_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 8685;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect conflict to be removed from buffer
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::REMOVE_OLD_CONFLICT);
|
||||
|
||||
}
|
||||
|
||||
TEST_F(AdsbConflictTest, trafficReminder)
|
||||
@@ -236,65 +238,77 @@ TEST_F(AdsbConflictTest, trafficReminder)
|
||||
full_buffer.timestamp.push_back(100_s);
|
||||
full_buffer.timestamp.push_back(5843_s);
|
||||
|
||||
|
||||
TestAdsbConflict adsb_conflict;
|
||||
|
||||
// GIVEN buffer with 8685 at t=100
|
||||
adsb_conflict.set_traffic_buffer(used_buffer);
|
||||
|
||||
// WHEN conflict detected at t=200
|
||||
bool conflict_detected = true;
|
||||
hrt_abstime now = 200_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 8685;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect conflict reminder
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::REMIND_CONFLICT);
|
||||
|
||||
// WHEN INSTEAD conflict is detected only 1s later
|
||||
conflict_detected = true;
|
||||
now = 201_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 8685;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN do not sent conflict notification again
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::NO_CONFLICT);
|
||||
|
||||
// GIVEN full buffer with 8685 at t=100
|
||||
adsb_conflict.set_traffic_buffer(full_buffer);
|
||||
|
||||
// WHEN conflict detected at t=400
|
||||
conflict_detected = true;
|
||||
now = 400_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 8685;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect conflict reminder
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::REMIND_CONFLICT);
|
||||
|
||||
// WHEN INSTEAD conflict is detected only 1s later
|
||||
conflict_detected = true;
|
||||
now = 401_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 8685;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN do not sent conflict notification again
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::NO_CONFLICT);
|
||||
|
||||
// WHEN conflict is set to false
|
||||
conflict_detected = false;
|
||||
now = 600_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 8685;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect conflict to be removed from buffer
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::REMOVE_OLD_CONFLICT);
|
||||
|
||||
// WHEN new conflict is detected
|
||||
conflict_detected = true;
|
||||
now = 700_s;
|
||||
adsb_conflict.set_conflict(conflict_detected);
|
||||
adsb_conflict._transponder_report.icao_address = 7777;
|
||||
adsb_conflict.get_traffic_state(now);
|
||||
|
||||
// THEN expect new conflict to be added to buffer
|
||||
printf("adsb_conflict._traffic_state %d \n", adsb_conflict._traffic_state);
|
||||
EXPECT_TRUE(adsb_conflict._traffic_state == TRAFFIC_STATE::ADD_CONFLICT);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user