FIX: fixed bug with unpacking sim track and updated the tests for several changed parts

This commit is contained in:
Henry Winkel
2023-09-28 10:13:26 +02:00
parent dae304baec
commit a27b73a841
9 changed files with 36 additions and 191 deletions

View File

@@ -120,10 +120,6 @@ IF (${TEST_SIMCORE_LIBRARY})
catch_discover_tests(test_SimTrack) catch_discover_tests(test_SimTrack)
add_executable(test_RadarTrackClass tests/test_RadarTrackClass.cpp)
target_link_libraries(test_RadarTrackClass Catch2::Catch2 SimCore loguru)
catch_discover_tests(test_RadarTrackClass)
add_executable(test_SafeMap tests/test_SafeMap.cpp) add_executable(test_SafeMap tests/test_SafeMap.cpp)
target_link_libraries(test_SafeMap Catch2::Catch2 SimCore loguru) target_link_libraries(test_SafeMap Catch2::Catch2 SimCore loguru)
catch_discover_tests(test_SafeMap) catch_discover_tests(test_SafeMap)
@@ -141,10 +137,7 @@ IF (${TEST_SIMCORE_LIBRARY})
target_link_libraries(test_UtilFunctions Catch2::Catch2 SimCore loguru) target_link_libraries(test_UtilFunctions Catch2::Catch2 SimCore loguru)
catch_discover_tests(test_UtilFunctions) catch_discover_tests(test_UtilFunctions)
add_executable(test_Trackstore tests/test_Trackstore.cpp)
target_link_libraries(test_Trackstore Catch2::Catch2 SimCore loguru)
catch_discover_tests(test_Trackstore)
add_executable(test_DataClass tests/test_DataClass.cpp) add_executable(test_DataClass tests/test_DataClass.cpp)
target_link_libraries(test_DataClass Catch2::Catch2 SimCore loguru) target_link_libraries(test_DataClass Catch2::Catch2 SimCore loguru)
catch_discover_tests(test_DataClass) catch_discover_tests(test_DataClass)

View File

@@ -16,8 +16,9 @@ namespace SimCore {
{} {}
Identifier::Identifier(xg::Guid uuid,bool external ):uuid_(uuid.str()),external_(external) Identifier::Identifier(xg::Guid uuid,bool external ):external_(external)
{ {
this->uuid_ = uuid.str();
} }

View File

@@ -152,7 +152,7 @@ namespace SimCore
m.payload().UnpackTo(&trackMsg); m.payload().UnpackTo(&trackMsg);
} }
SimCore::Identifier id(trackMsg.mutable_entityidentifier()); SimCore::Identifier id(*trackMsg.mutable_entityidentifier());
WHISPER::SourceType sourcetype = (WHISPER::SourceType)trackMsg.contactsourcetype(); WHISPER::SourceType sourcetype = (WHISPER::SourceType)trackMsg.contactsourcetype();

View File

@@ -1,6 +1,6 @@
#include "SimCore/Identifier.hpp" #include "SimCore/Identifier.hpp"
#include "SimCore/IdentifierMaker.hpp" #include "SimCore/IdentifierMaker.hpp"
#include <SimCore/Messages/GroundThruthTrack.hpp> #include "SimCore/Messages/SimTrack.hpp"
#include <WHISPER/Messages/Message.hpp> #include <WHISPER/Messages/Message.hpp>
#include <SimCore/SimCore.hpp> #include <SimCore/SimCore.hpp>
#include <algorithm> #include <algorithm>
@@ -31,8 +31,7 @@ SCENARIO("Testing the SimCore Track")
std::shared_ptr<WHISPER::Message> msg = NULL; std::shared_ptr<WHISPER::Message> msg = NULL;
std::shared_ptr<SimCore::GroundTruthTrack> trackPtr = NULL; std::shared_ptr<SimCore::SimTrack> trackPtr = NULL;
SimCore::Identifier parentID(0,1,false);
SimCore::IdentifierMaker IDMaker; SimCore::IdentifierMaker IDMaker;
auto ID = IDMaker.getNewIdentifier(1,SimCore::ObjectSource::EXTERNAL); auto ID = IDMaker.getNewIdentifier(1,SimCore::ObjectSource::EXTERNAL);
@@ -42,40 +41,37 @@ SCENARIO("Testing the SimCore Track")
WHEN("constructing Track Object with data") WHEN("constructing Track Object with data")
{ {
SimCore::Position pos( GeocentPos1(SimCore::GeocentricPosition::X), GeocentPos1(SimCore::GeocentricPosition::Y), GeocentPos1(SimCore::GeocentricPosition::Z)); SimCore::Position pos( GeocentPos1(SimCore::GeocentricPosition::X), GeocentPos1(SimCore::GeocentricPosition::Y), GeocentPos1(SimCore::GeocentricPosition::Z));
SimCore::GroundTruthTrack track(WHISPER::SourceType::SHIP,*ID.get(),SimCore::TrackKind::GROUND_TRUTH_TRACK); SimCore::SimTrack track("TEST",SimCore::Kind::SURFACE,SimCore::Side::FRIEND);
track.setCourse(course); track.Course.setValue(course);
track.setSpeed(speed); track.Speed.setValue(speed);
track.setPosition(GeocentPos1(SimCore::X),GeocentPos1(SimCore::Y),GeocentPos1(SimCore::Z)); track.setPosition(GeocentPos1(SimCore::X),GeocentPos1(SimCore::Y),GeocentPos1(SimCore::Z));
if (track.getPostion() == pos) { if (track.getPosition() == pos) {
testOperator = true; testOperator = true;
} }
serializedMSG = track.buildMessage(parentID).serialize(); serializedMSG = track.buildMessage().serialize();
msg = std::make_shared<WHISPER::Message>(serializedMSG); msg = std::make_shared<WHISPER::Message>(serializedMSG);
if (msg.get()->msgType_ == WHISPER::GROUND_TRUTH_TRACK) { if (msg.get()->msgType_ == WHISPER::GROUND_TRUTH_TRACK) {
trackPtr = std::make_shared<SimCore::GroundTruthTrack>(std::move(SimCore::GroundTruthTrack::unpack(*msg))); trackPtr = std::make_shared<SimCore::SimTrack>(std::move(SimCore::SimTrack::unpack(*msg)));
} }
std::string trackstring = track.buildMessage(parentID).serialize(); std::string trackstring = track.buildMessage().serialize();
SimCore::GroundTruthTrack trackDeserialized = SimCore::GroundTruthTrack::unpack(*msg); SimCore::SimTrack trackDeserialized = SimCore::SimTrack::unpack(*msg);
THEN("check if Track attributes are correct") THEN("check if Track attributes are correct")
{ {
REQUIRE(testOperator == true); REQUIRE(testOperator == true);
REQUIRE(track.getCourse() == course); REQUIRE(track.Course.getValue() == course);
REQUIRE(track.getSpeed() == speed); REQUIRE(track.Speed.getValue() == speed);
REQUIRE(track.getSpeedinKnots() == knots); REQUIRE(track.getPosition().getGeocentricPos() == pos.getGeocentricPos());
REQUIRE(track.getPostion().getGeocentricPos() == pos.getGeocentricPos());
REQUIRE(msg.get()->msgType_ == WHISPER::GROUND_TRUTH_TRACK); REQUIRE(msg.get()->msgType_ == WHISPER::GROUND_TRUTH_TRACK);
REQUIRE(trackPtr->getSpeed() == speed); REQUIRE(trackPtr->Speed.getValue() == speed);
REQUIRE(trackPtr->getPostion().getGeocentricPos() == GeocentPos1); REQUIRE(trackPtr->getPosition().getGeocentricPos() == GeocentPos1);
REQUIRE(trackPtr->getIdentifier().getNumber() > 0);
REQUIRE(trackDeserialized.getIdentifier().getNumber() > 0);

View File

@@ -12,9 +12,9 @@ SCENARIO("Testing the SimCorePositionClass")
{ {
SimCore::Identifier ID1(true); SimCore::Identifier ID1(true);
SimCore::Identifier ID2(); SimCore::Identifier ID2;
SimCore::Identifier ID3(); SimCore::Identifier ID3;
SimCore::Identifier ID4(); SimCore::Identifier ID4;
WHEN("constructing Position Object with data") WHEN("constructing Position Object with data")
@@ -25,7 +25,7 @@ SCENARIO("Testing the SimCorePositionClass")
THEN("positions attributes are correct") THEN("positions attributes are correct")
{ {
REQUIRE(ID1.isValid() == 100); REQUIRE(ID1.isValid() == true);
REQUIRE(ID1.isExternal() == true); REQUIRE(ID1.isExternal() == true);
REQUIRE(ID1 != ID2); REQUIRE(ID1 != ID2);

View File

@@ -14,12 +14,12 @@ SCENARIO("Testing the SimCorePositionClass")
{ {
SimCore::IdentifierMaker IDList; SimCore::IdentifierMaker IDList;
auto ID1 = IDList.getNewIdentifier(1,SimCore::EXTERNAL); auto ID1 = IDList.getNewIdentifier(SimCore::EXTERNAL);
auto ID2 = IDList.getNewIdentifier(1,SimCore::EXTERNAL); auto ID2 = IDList.getNewIdentifier(SimCore::EXTERNAL);
auto ID3 = IDList.getNewIdentifier(1,SimCore::EXTERNAL); auto ID3 = IDList.getNewIdentifier(SimCore::EXTERNAL);
auto ID4 = IDList.getNewIdentifier(0,SimCore::INTERNAL); auto ID4 = IDList.getNewIdentifier(SimCore::INTERNAL);
auto ID5 = std::make_shared<SimCore::Identifier>(0,100, SimCore::EXTERNAL); auto ID5 = std::make_shared<SimCore::Identifier>(SimCore::EXTERNAL);
WHEN("constructing Position Object with data") WHEN("constructing Position Object with data")
{ {

View File

@@ -1,70 +0,0 @@
#include "SimCore/Identifier.hpp"
#include "SimCore/IdentifierMaker.hpp"
#include "SimCore/Messages/RadarTrack.hpp"
#include <SimCore/Messages/Track.hpp>
#include <SimCore/SimCore.hpp>
#include <WHISPER/Messages/Message.hpp>
#include <memory>
#define CATCH_CONFIG_MAIN
#include <SimCore/Position.hpp>
#include <catch2/catch.hpp>
SCENARIO("Testing the SimCore Track") {
GIVEN("different Attributes for a Track in different forms") {
SimCore::Identifier ParentID(0,1,false);
Eigen::Vector3d GeocentPos1;
GeocentPos1(SimCore::GeocentricPosition::X) = 3784014.333;
GeocentPos1(SimCore::GeocentricPosition::Y) = 899869.779;
GeocentPos1(SimCore::GeocentricPosition::Z) = 5037960.502;
SimCore::Position pos(3784014.333, 899869.779, 5037960.502);
std::shared_ptr<WHISPER::Message>
msg = NULL;
SimCore::IdentifierMaker IDMaker;
std::shared_ptr<SimCore::Identifier> ID =
IDMaker.getNewIdentifier(ParentID.getNumber(),SimCore::ObjectSource::INTERNAL);
LOG_S(INFO)<<"ID: " << ID->getNumber();
std::shared_ptr<SimCore::RadarTrack> RadartrackPtr =
std::make_shared<SimCore::RadarTrack>( WHISPER::SourceType::SENSOR, *ID.get());
RadartrackPtr->setPosition(pos);
RadartrackPtr->setBearing(90);
RadartrackPtr->setCourse(360);
RadartrackPtr->setRange(1000);
RadartrackPtr->setEnvironment(SimCore::EntityKind::SURFACE);
bool isEqual = false;
WHEN("constructing Track Object with data") {
std::string serializedMSG = RadartrackPtr->buildMessage(ParentID).serialize();
// SimCore::RadarTrack radarTrack2(serializedMSG);
// SimCore::Identifier ID1(radarTrack2.getID());
// auto tr0 = *RadartrackPtr.get();
// SimCore::Identifier ID2(tr0.getID());
// LOG_S(INFO)<<"ID21 source: " << ID1.isExternal();
// LOG_S(INFO)<<"ID2 source: " << ID2.isExternal();
// if (ID1 == ID2) {
// isEqual = true;
// }
THEN("check if Track attributes are correct") {
// REQUIRE(RadartrackPtr->getID().getNumber() == 1);
// REQUIRE(isEqual == true);
// REQUIRE(radarTrack2.getID() == RadartrackPtr->getID());
// REQUIRE(radarTrack2.getID().getNumber() == RadartrackPtr->getID().getNumber());
// REQUIRE(radarTrack2.getPostion().getGeocentricPos() == RadartrackPtr->getPostion().getGeocentricPos());
} // THEN
} // WHEN
} // GIVEN
} // SCENARIO

View File

@@ -15,7 +15,6 @@ SCENARIO("Testing the SimCore Track")
{ {
GIVEN("different Attributes for a Track in different forms") GIVEN("different Attributes for a Track in different forms")
{ {
auto OwnID = SimCore::Identifier();
Eigen::Vector3d GeocentPos1; Eigen::Vector3d GeocentPos1;
GeocentPos1(SimCore::GeocentricPosition::X) = 3784014.333; GeocentPos1(SimCore::GeocentricPosition::X) = 3784014.333;
@@ -44,7 +43,7 @@ SCENARIO("Testing the SimCore Track")
WHEN("constructing Track Object with data") WHEN("constructing Track Object with data")
{ {
SimCore::Position pos( GeocentPos1(SimCore::GeocentricPosition::X), GeocentPos1(SimCore::GeocentricPosition::Y), GeocentPos1(SimCore::GeocentricPosition::Z)); SimCore::Position pos( GeocentPos1(SimCore::GeocentricPosition::X), GeocentPos1(SimCore::GeocentricPosition::Y), GeocentPos1(SimCore::GeocentricPosition::Z));
SimCore::SimTrack track(WHISPER::SourceType::SHIP,SimCore::EntityKind::LAND); SimCore::SimTrack track("TEST",SimCore::Kind::EntityKind::LAND, SimCore::Side::FRIEND);
track.Speed.setValue(speed); track.Speed.setValue(speed);
track.Course.setValue(course); track.Course.setValue(course);
track.setPosition(pos1); track.setPosition(pos1);
@@ -57,16 +56,18 @@ SCENARIO("Testing the SimCore Track")
track.addEmission(emi1); track.addEmission(emi1);
serializedMSG = track.buildMessage(OwnID).serialize(); serializedMSG = track.buildMessage().serialize();
msg = std::make_shared<WHISPER::Message>(serializedMSG); msg = std::make_shared<WHISPER::Message>(serializedMSG);
if (msg.get()->msgType_ == WHISPER::GROUND_TRUTH_TRACK) { if (msg.get()->msgType_ == WHISPER::SIM_TRACK) {
LOG_S(INFO)<< msg.get()->topic_; LOG_S(INFO)<< msg.get()->topic_;
trackPtr = std::make_shared<SimCore::SimTrack>(std::move(SimCore::SimTrack::unpack(*msg))); trackPtr = std::make_shared<SimCore::SimTrack>(std::move(SimCore::SimTrack::unpack(*msg)));
} }
auto tmp = SimCore::SimTrack::unpack(serializedMSG);
// std::string trackstring = track.buildMessage(parentID).serialize(); // std::string trackstring = track.buildMessage(parentID).serialize();
SimCore::SimTrack trackDeserialized = SimCore::SimTrack::unpack(*msg); SimCore::SimTrack trackDeserialized = SimCore::SimTrack::unpack(*msg);
@@ -77,6 +78,8 @@ SCENARIO("Testing the SimCore Track")
THEN("check if Track attributes are correct") THEN("check if Track attributes are correct")
{ {
REQUIRE(tmp->getIdentifier().getUUID() == track.getIdentifier().getUUID());
REQUIRE(testOperator == true); REQUIRE(testOperator == true);
REQUIRE(track.Course.getValue() == course); REQUIRE(track.Course.getValue() == course);
REQUIRE(track.Speed.getValue() == speed); REQUIRE(track.Speed.getValue() == speed);
@@ -84,7 +87,7 @@ SCENARIO("Testing the SimCore Track")
REQUIRE(track.coutEmissions() > 0); REQUIRE(track.coutEmissions() > 0);
REQUIRE(track.getEmission(emi1.getID()).get()->getID() == idEmi); REQUIRE(track.getEmission(emi1.getID()).get()->getID() == idEmi);
// REQUIRE(msg.get()->msgType_ == WHISPER::GROUND_TRUTH_TRACK); REQUIRE(msg.get()->msgType_ == WHISPER::SIM_TRACK);
REQUIRE(trackPtr->Speed.getValue() == speed); REQUIRE(trackPtr->Speed.getValue() == speed);
REQUIRE(trackPtr->getPosition().getGeocentricPos() == GeocentPos1); REQUIRE(trackPtr->getPosition().getGeocentricPos() == GeocentPos1);

View File

@@ -1,78 +0,0 @@
#include "SimCore/Identifier.hpp"
#include "SimCore/IdentifierMaker.hpp"
#include "SimCore/Messages/GroundThruthTrack.hpp"
#include "SimCore/Messages/SensorTrack.hpp"
#include "SimCore/Messages/Track.hpp"
#include "SimCore/SimCore.hpp"
#include "WHISPER/Messages/Message.hpp"
#include <list>
#include <memory>
#include <string>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
#include <SimCore/Messages/RadarTrack.hpp>
#include <loguru.hpp>
SCENARIO("Testing the SimCore Track")
{
GIVEN("different Attributes for a Track in different forms")
{
std::vector<std::shared_ptr<SimCore::Track>> trackstore;
SimCore::Identifier parentID(0,1,false);
SimCore::IdentifierMaker IDMaker;
auto ID1 = IDMaker.getNewIdentifier(1, SimCore::ObjectSource::INTERNAL);
auto ID2 = IDMaker.getNewIdentifier(1, SimCore::ObjectSource::INTERNAL);
auto track = std::make_shared<SimCore::RadarTrack>(WHISPER::SourceType::SENSOR,*ID1.get());
track->setSpeed(100);
trackstore.push_back(track);
auto track2 = std::make_shared<SimCore::GroundTruthTrack>(WHISPER::SourceType::SENSOR,*ID2,SimCore::TrackKind::OWN_TRACK);
track2->setSpeed(50);
trackstore.push_back(track2);
auto receivedTrack1 = trackstore[0];
auto receivedTrack2 = trackstore[1];
WHEN("constructing Track Object with data")
{
// auto rev = list.front();
// LOG_S(INFO)<<rev->msgType_;
// // auto track2 = dynamic_pointer_cast<SimCore::RadarTrack>(rev);
THEN("check if Track attributes are correct")
{
REQUIRE(trackstore.size() == 2);
REQUIRE(receivedTrack1->getTrackkind() == SimCore::TrackKind::RADAR_TRACK);
if (receivedTrack1->getTrackkind() == SimCore::TrackKind::RADAR_TRACK) {
auto radarTrackRecv1 = std::dynamic_pointer_cast<SimCore::RadarTrack>(receivedTrack1);
REQUIRE(radarTrackRecv1->getSpeed() == 100);
}
REQUIRE(receivedTrack2->getTrackkind() == SimCore::TrackKind::OWN_TRACK);
// REQUIRE(track12->getSpeed() == 100);
} //THEN
} // WHEN
} // GIVEN
} //SCENARIO