ADD: added Sensor virtual PArent class
This commit is contained in:
@@ -58,7 +58,8 @@ add_library(SimCore STATIC
|
|||||||
include/SimCore/UtilFunctions.hpp
|
include/SimCore/UtilFunctions.hpp
|
||||||
src/SimCore/UtilFunctions.cpp
|
src/SimCore/UtilFunctions.cpp
|
||||||
|
|
||||||
|
include/SimCore/Sensor.hpp
|
||||||
|
src/SimCore/Sensor.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(SimCore
|
target_link_libraries(SimCore
|
||||||
@@ -131,6 +132,10 @@ 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_SensorClass tests/test_SensorClass.cpp)
|
||||||
|
target_link_libraries(test_SensorClass Catch2::Catch2 SimCore loguru)
|
||||||
|
catch_discover_tests(test_SensorClass)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|||||||
76
include/SimCore/Sensor.hpp
Normal file
76
include/SimCore/Sensor.hpp
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include "SimCore/Messages/Track.hpp"
|
||||||
|
#include <WHISPER/InternalUDPService.hpp>
|
||||||
|
#include <SimCore/Identifier.hpp>
|
||||||
|
|
||||||
|
#include <WHISPER/threadSafeQueue.hpp>
|
||||||
|
#include <WHISPER/Messages/Message.hpp>
|
||||||
|
#include <SimCore/SimCore.hpp>
|
||||||
|
#include <SimCore/Identifier.hpp>
|
||||||
|
#include <SimCore/Position.hpp>
|
||||||
|
#include <memory>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
namespace SimCore {
|
||||||
|
|
||||||
|
class Sensor {
|
||||||
|
public:
|
||||||
|
Sensor(SimCore::Identifier OwnID, SimCore::Identifier ParentID, SimCore::SensorKinds SensorKind,std::uint32_t GroundTruthPort, std::uint32_t ParentPort,std::string ParentIPAddress);
|
||||||
|
~Sensor();
|
||||||
|
void start();
|
||||||
|
void stop();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
std::shared_ptr<WHISPER::threadSafeQueue<SimCore::Track>> incommingTrackMessages = nullptr;
|
||||||
|
|
||||||
|
|
||||||
|
std::shared_ptr<WHISPER::threadSafeQueue<WHISPER::Message>> incommingGroundThruthMessages = nullptr;
|
||||||
|
std::shared_ptr<WHISPER::threadSafeQueue<WHISPER::Message>> outgoingGroundThruthMessages = nullptr;
|
||||||
|
|
||||||
|
std::shared_ptr<WHISPER::threadSafeQueue<WHISPER::Message>> incommingParentMessages = nullptr;
|
||||||
|
std::shared_ptr<WHISPER::threadSafeQueue<WHISPER::Message>> outgoingParentMessages = nullptr;
|
||||||
|
|
||||||
|
virtual void specificSensorCalculations() = 0;
|
||||||
|
virtual void specificReloadCharacteristicts() = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
SimCore::Identifier OwnID_;
|
||||||
|
SimCore::Identifier ParentID_;
|
||||||
|
SimCore::SensorKinds SensorKind_;
|
||||||
|
std::uint32_t GroundTruthPort_;
|
||||||
|
std::uint32_t ParentPort_;
|
||||||
|
std::string ParentIPAddress_;
|
||||||
|
|
||||||
|
std::shared_ptr<WHISPER::InternalUDPService> GroundTruthUDPService_ = nullptr;
|
||||||
|
std::shared_ptr<WHISPER::InternalUDPService> ParentUDPService_ = nullptr;
|
||||||
|
|
||||||
|
void receivingData();
|
||||||
|
void sendingData();
|
||||||
|
|
||||||
|
void SensorCalculations();
|
||||||
|
void ReloadCharacteristicts();
|
||||||
|
|
||||||
|
std::atomic<bool> stopReceivingGroundThruth = false;
|
||||||
|
std::atomic<bool> ReceivingGroundThruthIsRunnung = false;
|
||||||
|
|
||||||
|
std::atomic<bool> stopsendCalculatedData = false;
|
||||||
|
std::atomic<bool> sendCalculatedDataIsRunnung = false;
|
||||||
|
|
||||||
|
std::atomic<bool> stopCalculationData = false;
|
||||||
|
std::atomic<bool> CalculationIsRunnung = false;
|
||||||
|
|
||||||
|
|
||||||
|
std::thread receiveGroundTruthThread;
|
||||||
|
std::thread sendCalculatedDataThread;
|
||||||
|
|
||||||
|
std::thread sensorCalculationThread;
|
||||||
|
|
||||||
|
std::shared_ptr<Position> position_ = nullptr;
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -37,4 +37,12 @@ enum ContactEnvironment : std::uint8_t{
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
enum SensorKinds : std::uint32_t {
|
||||||
|
RADAR = 1,
|
||||||
|
ELOKA,
|
||||||
|
SONAR,
|
||||||
|
VISUAL
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <netdb.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -12,9 +13,13 @@ namespace SimCore {
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static std::vector<std::string> explode(std::string const & s, char delim);
|
static std::vector<std::string> explode(std::string const & s, char delim);
|
||||||
|
static std::string implode(const std::vector<std::string> &v , char delim);
|
||||||
|
|
||||||
static bool isNumber(const std::string& s);
|
static bool isNumber(const std::string& s);
|
||||||
|
static void check_host_name(int hostname);
|
||||||
|
static void check_host_entry(struct hostent * hostentry);
|
||||||
|
static void IP_formatter(char *IPbuffer);
|
||||||
|
static std::string getOwnIP();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Submodule libs/whisper-com updated: 6b8d6ad265...49bdb28535
182
src/SimCore/Sensor.cpp
Normal file
182
src/SimCore/Sensor.cpp
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
#include "SimCore/Messages/Track.hpp"
|
||||||
|
#include "SimCore/UtilFunctions.hpp"
|
||||||
|
#include "WHISPER/Messages/Message.hpp"
|
||||||
|
#include <SimCore/Sensor.hpp>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
namespace SimCore {
|
||||||
|
|
||||||
|
Sensor::Sensor(SimCore::Identifier OwnID, SimCore::Identifier ParentID, SimCore::SensorKinds SensorKind,std::uint32_t GroundTruthPort, std::uint32_t ParentPort,std::string ParentIPAddress):
|
||||||
|
OwnID_(OwnID),ParentID_(ParentID),SensorKind_(SensorKind),GroundTruthPort_(GroundTruthPort),ParentPort_(ParentPort),ParentIPAddress_(ParentIPAddress)
|
||||||
|
{
|
||||||
|
|
||||||
|
std::string ownIP = SimCore::UtilFunctions::getOwnIP();
|
||||||
|
auto ip = SimCore::UtilFunctions::explode(ownIP, '.');
|
||||||
|
ip[3] = "255";
|
||||||
|
LOG_S(INFO)<<SimCore::UtilFunctions::implode(ip,'.');
|
||||||
|
incommingGroundThruthMessages = std::make_shared<WHISPER::threadSafeQueue<WHISPER::Message>>();
|
||||||
|
outgoingGroundThruthMessages = std::make_shared<WHISPER::threadSafeQueue<WHISPER::Message>>();
|
||||||
|
|
||||||
|
incommingParentMessages = std::make_shared<WHISPER::threadSafeQueue<WHISPER::Message>>();
|
||||||
|
outgoingParentMessages = std::make_shared<WHISPER::threadSafeQueue<WHISPER::Message>>();
|
||||||
|
|
||||||
|
incommingTrackMessages = std::make_shared<WHISPER::threadSafeQueue<SimCore::Track>>();
|
||||||
|
|
||||||
|
|
||||||
|
GroundTruthUDPService_ = std::make_shared<WHISPER::InternalUDPService>(OwnID.getNumber(),WHISPER::SENSOR,8000,SimCore::UtilFunctions::implode(ip,'.'),ownIP);
|
||||||
|
ParentUDPService_ = std::make_shared<WHISPER::InternalUDPService>(OwnID.getNumber(),WHISPER::SENSOR,ParentPort,ParentIPAddress_,ownIP);
|
||||||
|
|
||||||
|
ReloadCharacteristicts();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Sensor::~Sensor(){
|
||||||
|
this->stop();
|
||||||
|
|
||||||
|
while (!this->incommingGroundThruthMessages.unique()) {
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
|
}
|
||||||
|
this->incommingGroundThruthMessages.reset();
|
||||||
|
|
||||||
|
while (!this->outgoingGroundThruthMessages.unique()) {
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
|
}
|
||||||
|
this->outgoingGroundThruthMessages.reset();
|
||||||
|
|
||||||
|
|
||||||
|
GroundTruthUDPService_->disconnect();
|
||||||
|
while (!this->GroundTruthUDPService_.unique()) {
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
|
}
|
||||||
|
this->GroundTruthUDPService_.reset();
|
||||||
|
|
||||||
|
|
||||||
|
ParentUDPService_->disconnect();
|
||||||
|
while (!this->ParentUDPService_.unique()) {
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(100));
|
||||||
|
}
|
||||||
|
this->ParentUDPService_.reset();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sensor::start(){
|
||||||
|
stopReceivingGroundThruth = false;
|
||||||
|
receiveGroundTruthThread = std::thread(&Sensor::receivingData,this);
|
||||||
|
|
||||||
|
// stopsendCalculatedData = false;
|
||||||
|
// sendCalculatedDataThread = std::thread(&Sensor::sendingData,this);
|
||||||
|
|
||||||
|
// stopCalculationData = false;
|
||||||
|
// sensorCalculationThread = std::thread(&Sensor::SensorCalculations,this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sensor::stop() {
|
||||||
|
|
||||||
|
|
||||||
|
while (ReceivingGroundThruthIsRunnung == true ) {
|
||||||
|
stopReceivingGroundThruth = true;
|
||||||
|
LOG_S(INFO)<<"waiting for receiving thread thread";
|
||||||
|
if (receiveGroundTruthThread.joinable() == true ) {
|
||||||
|
receiveGroundTruthThread.join();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while (sendCalculatedDataIsRunnung == true ) {
|
||||||
|
stopsendCalculatedData = true;
|
||||||
|
LOG_S(INFO)<<"waiting for receiving thread thread";
|
||||||
|
if (sendCalculatedDataThread.joinable() == true ) {
|
||||||
|
sendCalculatedDataThread.join();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while (CalculationIsRunnung == true ) {
|
||||||
|
stopCalculationData = true;
|
||||||
|
LOG_S(INFO)<<"waiting for receiving thread thread";
|
||||||
|
if (sensorCalculationThread.joinable() == true ) {
|
||||||
|
sensorCalculationThread.join();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Sensor::receivingData()
|
||||||
|
{
|
||||||
|
this->ReceivingGroundThruthIsRunnung = true;
|
||||||
|
// GroundTruthUDPService_->connect(incommingGroundThruthMessages);
|
||||||
|
// GroundTruthUDPService_->subscribe(WHISPER::MsgTopicsMap[WHISPER::MsgTopics::TRACK]);
|
||||||
|
|
||||||
|
// while (stopReceivingGroundThruth == false) {
|
||||||
|
// if (incommingGroundThruthMessages->size() > 0) {
|
||||||
|
// WHISPER::Message msg;
|
||||||
|
// incommingGroundThruthMessages->get(msg);
|
||||||
|
// if (msg.msgType_ == WHISPER::MsgType::RAW_TRACK) {
|
||||||
|
// auto Track = SimCore::Track(msg.serialize());
|
||||||
|
// incommingTrackMessages->addElement(Track);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (outgoingGroundThruthMessages->size() > 0) {
|
||||||
|
// WHISPER::Message msg;
|
||||||
|
// outgoingGroundThruthMessages->get(msg);
|
||||||
|
// GroundTruthUDPService_->publish(msg.serialize(), WHISPER::MsgTopicsMap[(WHISPER::MsgTopics)msg.topic_]);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// }
|
||||||
|
// GroundTruthUDPService_->disconnect();
|
||||||
|
this->ReceivingGroundThruthIsRunnung = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sensor::sendingData()
|
||||||
|
{
|
||||||
|
this->sendCalculatedDataIsRunnung = true;
|
||||||
|
|
||||||
|
ParentUDPService_->connect(incommingParentMessages);
|
||||||
|
ParentUDPService_->subscribe(WHISPER::MsgTopicsMap[WHISPER::MsgTopics::COMMANDS]);
|
||||||
|
|
||||||
|
while (stopsendCalculatedData == false) {
|
||||||
|
|
||||||
|
if (incommingParentMessages->size() > 0) {
|
||||||
|
WHISPER::Message msg;
|
||||||
|
incommingGroundThruthMessages->get(msg);
|
||||||
|
LOG_S(INFO)<< "Message received from Parent is" << msg.msgType_;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (outgoingParentMessages->size() > 0) {
|
||||||
|
WHISPER::Message msg;
|
||||||
|
outgoingParentMessages->get(msg);
|
||||||
|
ParentUDPService_->publish(msg.serialize(), WHISPER::MsgTopicsMap[(WHISPER::MsgTopics)msg.topic_]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
this->sendCalculatedDataIsRunnung = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Sensor::SensorCalculations()
|
||||||
|
{
|
||||||
|
CalculationIsRunnung = true;
|
||||||
|
specificSensorCalculations();
|
||||||
|
|
||||||
|
while (!stopCalculationData) {
|
||||||
|
specificSensorCalculations();
|
||||||
|
}
|
||||||
|
|
||||||
|
CalculationIsRunnung = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Sensor::ReloadCharacteristicts()
|
||||||
|
{
|
||||||
|
LOG_S(INFO)<<"loading specs";
|
||||||
|
|
||||||
|
// specificReloadCharacteristicts();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,4 +1,8 @@
|
|||||||
#include <SimCore/UtilFunctions.hpp>
|
#include <SimCore/UtilFunctions.hpp>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <string>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
namespace SimCore {
|
namespace SimCore {
|
||||||
|
|
||||||
@@ -16,6 +20,22 @@ namespace SimCore {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string UtilFunctions::implode(const std::vector<std::string> &v , char delim)
|
||||||
|
{
|
||||||
|
std::string ret;
|
||||||
|
|
||||||
|
for(const auto &s : v)
|
||||||
|
{
|
||||||
|
if(!ret.empty())
|
||||||
|
{
|
||||||
|
ret += delim;
|
||||||
|
}
|
||||||
|
ret += s;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool UtilFunctions::isNumber(const std::string& s)
|
bool UtilFunctions::isNumber(const std::string& s)
|
||||||
{
|
{
|
||||||
@@ -23,4 +43,38 @@ namespace SimCore {
|
|||||||
s.end(), [](unsigned char c) { return !std::isdigit(c); }) == s.end();
|
s.end(), [](unsigned char c) { return !std::isdigit(c); }) == s.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UtilFunctions::check_host_name(int hostname) { //This function returns host name for local computer
|
||||||
|
if (hostname == -1) {
|
||||||
|
perror("gethostname");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void UtilFunctions::check_host_entry(struct hostent * hostentry) { //find host info from host name
|
||||||
|
if (hostentry == NULL){
|
||||||
|
perror("gethostbyname");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void IP_formatter(char *IPbuffer) { //convert IP string to dotted decimal format
|
||||||
|
if (NULL == IPbuffer) {
|
||||||
|
perror("inet_ntoa");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string UtilFunctions::getOwnIP(){
|
||||||
|
char host[256];
|
||||||
|
char *IP;
|
||||||
|
struct hostent *host_entry;
|
||||||
|
int hostname;
|
||||||
|
hostname = gethostname(host, sizeof(host)); //find the host name
|
||||||
|
check_host_name(hostname);
|
||||||
|
host_entry = gethostbyname(host); //find host information
|
||||||
|
check_host_entry(host_entry);
|
||||||
|
IP = inet_ntoa(*((struct in_addr*) host_entry->h_addr_list[0])); //Convert into IP string
|
||||||
|
|
||||||
|
|
||||||
|
return IP;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
67
tests/test_SensorClass.cpp
Normal file
67
tests/test_SensorClass.cpp
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
|
||||||
|
#include "SimCore/Identifier.hpp"
|
||||||
|
#include <SimCore/SimCore.hpp>
|
||||||
|
#include <memory>
|
||||||
|
#include <thread>
|
||||||
|
#define CATCH_CONFIG_MAIN
|
||||||
|
#include <catch2/catch.hpp>
|
||||||
|
#include <SimCore/Sensor.hpp>
|
||||||
|
|
||||||
|
// SimCore::Identifier OwnID, SimCore::Identifier ParentID, SimCore::SensorKinds SensorKind,std::uint32_t GroundTruthPort, std::uint32_t ParentPort,std::string ParentIPAddress
|
||||||
|
class Radar : public SimCore::Sensor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Radar(SimCore::Identifier OwnID,
|
||||||
|
SimCore::Identifier ParentID,
|
||||||
|
SimCore::SensorKinds SensorKind,
|
||||||
|
std::uint32_t GroundTruthPort,
|
||||||
|
std::uint32_t ParentPort,
|
||||||
|
std::string ParentIPAddress,
|
||||||
|
std::string radarType):SimCore::Sensor(OwnID, ParentID, SensorKind, GroundTruthPort, ParentPort, ParentIPAddress),radarType_(radarType)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string radarType_;
|
||||||
|
|
||||||
|
void specificSensorCalculations() override
|
||||||
|
{
|
||||||
|
LOG_S(INFO)<<"calculating";
|
||||||
|
};
|
||||||
|
|
||||||
|
void specificReloadCharacteristicts() override
|
||||||
|
{
|
||||||
|
LOG_S(INFO)<<"loading specifications";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SCENARIO("Testing the SimCore Sensor")
|
||||||
|
{
|
||||||
|
GIVEN("different Attributes for a Track in different forms")
|
||||||
|
{
|
||||||
|
SimCore::Identifier IDParent(0,1,false);
|
||||||
|
SimCore::Identifier IDRadar(1,1,false);
|
||||||
|
|
||||||
|
Radar Radar(IDRadar,IDParent,SimCore::SensorKinds::RADAR,8000,8001,"127.0.0.1","APAR");
|
||||||
|
Radar.start();
|
||||||
|
|
||||||
|
WHEN("constructing Track Object with data")
|
||||||
|
{
|
||||||
|
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||||
|
THEN("check if Track attributes are correct")
|
||||||
|
{
|
||||||
|
// REQUIRE(testOperator == true);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} //THEN
|
||||||
|
} // WHEN
|
||||||
|
} // GIVEN
|
||||||
|
} //SCENARIO
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#define CATCH_CONFIG_MAIN
|
#define CATCH_CONFIG_MAIN
|
||||||
#include <catch2/catch.hpp>
|
#include <catch2/catch.hpp>
|
||||||
|
#include <loguru.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -14,6 +15,14 @@ SCENARIO("Testing the SimCorePositionClass")
|
|||||||
std::string s1 = "hello.world.guy";
|
std::string s1 = "hello.world.guy";
|
||||||
std::string s2 = "my;Name;is;henry";
|
std::string s2 = "my;Name;is;henry";
|
||||||
|
|
||||||
|
std::string ownIP = SimCore::UtilFunctions::getOwnIP();
|
||||||
|
LOG_S(INFO)<<ownIP;
|
||||||
|
auto ip = SimCore::UtilFunctions::explode(ownIP, '.');
|
||||||
|
ip[3] = "255";
|
||||||
|
LOG_S(INFO)<< ip[0]+"."+ip[1]+"."+ip[2]+"."+ip[3];
|
||||||
|
|
||||||
|
LOG_S(INFO)<<SimCore::UtilFunctions::implode(ip, '.');
|
||||||
|
|
||||||
|
|
||||||
WHEN("constructing Position Object with data")
|
WHEN("constructing Position Object with data")
|
||||||
{
|
{
|
||||||
@@ -27,8 +36,10 @@ SCENARIO("Testing the SimCorePositionClass")
|
|||||||
REQUIRE(v1.size() == 3);
|
REQUIRE(v1.size() == 3);
|
||||||
REQUIRE(v1.begin()->compare("hello") == 0);
|
REQUIRE(v1.begin()->compare("hello") == 0);
|
||||||
|
|
||||||
REQUIRE(v2.size() == 4);
|
REQUIRE(v2.size() == 4);
|
||||||
REQUIRE(v2[1].compare("Name") == 0);
|
REQUIRE(v2[1].compare("Name") == 0);
|
||||||
|
REQUIRE(ownIP.size() > 0);
|
||||||
|
REQUIRE(ip.size() == 4);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user