Files
SimCore/tests/test_TrackClass.cpp

78 lines
2.5 KiB
C++

#include "SimCore/IdentifierMaker.hpp"
#include <SimCore/Messages/Track.hpp>
#include <WHISPER/Messages/Message.hpp>
#include <SimCore/SimCore.hpp>
#include <memory>
#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>
#include <SimCore/Position.hpp>
SCENARIO("Testing the SimCore Track")
{
GIVEN("different Attributes for a Track in different forms")
{
Eigen::Vector3d GeocentPos1;
GeocentPos1(SimCore::GeocentricPosition::X) = 3784014.333;
GeocentPos1(SimCore::GeocentricPosition::Y) = 899869.779;
GeocentPos1(SimCore::GeocentricPosition::Z) = 5037960.502;
Eigen::Vector3d GeodesPos1;
GeodesPos1(SimCore::GeodesicPosition::LATITUDE) = 52.516181;
GeodesPos1(SimCore::GeodesicPosition::LONGITUDE) = 13.376935;
GeodesPos1(SimCore::GeodesicPosition::HEIGHT) = 0;
double course = 90;
double speed = 10;
double knots = speed * SimCore::MsKt;
bool testOperator = false;
std::shared_ptr<WHISPER::Message> msg = NULL;
std::shared_ptr<SimCore::Track> trackPtr = NULL;
SimCore::IdentifierMaker IDMaker;
auto ID = IDMaker.getNewIdentifier(SimCore::ObjectSource::EXTERNAL);
std::string serializedMSG;
WHEN("constructing Track Object with data")
{
SimCore::Position pos( GeocentPos1(SimCore::GeocentricPosition::X), GeocentPos1(SimCore::GeocentricPosition::Y), GeocentPos1(SimCore::GeocentricPosition::Z));
SimCore::Track track(1,WHISPER::SourceType::SHIP,*ID.get());
track.setCourse(course);
track.setSpeed(speed);
track.setPosition(GeocentPos1(SimCore::X),GeocentPos1(SimCore::Y),GeocentPos1(SimCore::Z));
if (track.getPostion() == pos) {
testOperator = true;
}
serializedMSG = track.serialize();
msg = std::make_shared<WHISPER::Message>(serializedMSG);
if (msg.get()->msgType_ == WHISPER::RAW_TRACK) {
trackPtr = std::make_shared<SimCore::Track>(serializedMSG);
}
THEN("check if Track attributes are correct")
{
REQUIRE(testOperator == true);
REQUIRE(track.getCourse() == course);
REQUIRE(track.getSpeed() == speed);
REQUIRE(track.getSpeedinKnots() == knots);
REQUIRE(track.getPostion().getGeocentricPos() == pos.getGeocentricPos());
REQUIRE(msg.get()->msgType_ == WHISPER::RAW_TRACK);
REQUIRE(trackPtr->getSpeed() == speed);
REQUIRE(trackPtr->getPostion().getGeocentricPos() == GeocentPos1);
REQUIRE(trackPtr->getIdentifier()->getNumber() > 0);
} //THEN
} // WHEN
} // GIVEN
} //SCENARIO