Skip to content

Commit

Permalink
code smell and coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
dan-du-car committed Jul 19, 2023
1 parent 1705c98 commit 4e6aa43
Show file tree
Hide file tree
Showing 6 changed files with 187 additions and 89 deletions.
132 changes: 72 additions & 60 deletions src/tmx/TmxUtils/src/simulation/SimulationExternalObjectConverter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace tmx::utils::sim
{
string SimulationExternalObjectConverter::simExternalObjToJsonStr(simulation::ExternalObject &simExternalObj)
std::string SimulationExternalObjectConverter::simExternalObjToJsonStr(tmx::messages::simulation::ExternalObject &simExternalObj)
{
Json::Value root;
Json::Value metadata;
Expand All @@ -23,7 +23,7 @@ namespace tmx::utils::sim
root["header"] = header;

root["id"] = simExternalObj.get_Id();
if (simExternalObj.get_PresenceVector() != simulation::PRESENCE_VECTOR_TYPES::UNAVAILABLE)
if (simExternalObj.get_PresenceVector() != tmx::messages::simulation::PRESENCE_VECTOR_TYPES::UNAVAILABLE)
{
root["presence_vector"] = simExternalObj.get_PresenceVector();
}
Expand All @@ -37,10 +37,8 @@ namespace tmx::utils::sim
pose["pose"]["orientation"]["z"] = simExternalObj.get_PosePoseOrientationZ();
pose["pose"]["orientation"]["w"] = simExternalObj.get_PosePoseOrientationW();
auto pCovarianceV = simExternalObj.get_PoseCovariance();
for (auto itr = pCovarianceV.begin(); itr != pCovarianceV.end(); itr++)
{
pose["covariance"].append(Json::Value(itr->covariance));
}
std::for_each(pCovarianceV.begin(), pCovarianceV.end(), [&pose](const auto &item)
{ pose["covariance"].append(Json::Value(item.covariance)); });
root["pose"] = pose;

Json::Value velocity;
Expand All @@ -51,10 +49,8 @@ namespace tmx::utils::sim
velocity["twist"]["angular"]["y"] = simExternalObj.get_VelocityTwistAngularY();
velocity["twist"]["angular"]["z"] = simExternalObj.get_VelocityTwistAngularZ();
auto vCovarianceV = simExternalObj.get_VelocityCovariance();
for (auto itr = vCovarianceV.begin(); itr != vCovarianceV.end(); itr++)
{
velocity["covariance"].append(Json::Value(itr->covariance));
}
std::for_each(vCovarianceV.begin(), vCovarianceV.end(), [&velocity](const auto &item)
{ velocity["covariance"].append(Json::Value(item.covariance)); });
root["velocity"] = velocity;

Json::Value size;
Expand All @@ -64,22 +60,22 @@ namespace tmx::utils::sim
root["size"] = size;

root["confidence"] = simExternalObj.get_Confidence();
root["object_type"] = to_string(simExternalObj.get_ObjectType());
root["object_type"] = std::to_string(simExternalObj.get_ObjectType());
root["dynamic_obj"] = simExternalObj.get_DynamticObj();
Json::StreamWriterBuilder builder;
const std::string json_str = Json::writeString(builder, root);
return json_str;
}

void SimulationExternalObjectConverter::jsonToSimExternalObj(const string &jsonStr, simulation::ExternalObject &simExternalObj)
void SimulationExternalObjectConverter::jsonToSimExternalObj(const std::string &jsonStr, tmx::messages::simulation::ExternalObject &simExternalObj)
{
Json::CharReaderBuilder builder;
const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
Json::Value root;
JSONCPP_STRING err;
if (!reader->parse(jsonStr.c_str(), jsonStr.c_str() + static_cast<int>(jsonStr.length()), &root, &err))
{
throw runtime_error("Error parsing external object JSON string.");
throw std::runtime_error("Error parsing external object JSON string.");
}

/**
Expand Down Expand Up @@ -154,7 +150,7 @@ namespace tmx::utils::sim
}
}

void SimulationExternalObjectConverter::populateSimExternalObjectMetadata(const Json::Value &metadataValue, simulation::ExternalObject &simExternalObj)
void SimulationExternalObjectConverter::populateSimExternalObjectMetadata(const Json::Value &metadataValue, tmx::messages::simulation::ExternalObject &simExternalObj)
{
if (metadataValue.isMember("is_simulation") && metadataValue["is_simulation"].isBool())
{
Expand Down Expand Up @@ -197,7 +193,7 @@ namespace tmx::utils::sim
}
}

void SimulationExternalObjectConverter::populateSimExternalObjectHeader(const Json::Value &headerValue, simulation::ExternalObject &simExternalObj)
void SimulationExternalObjectConverter::populateSimExternalObjectHeader(const Json::Value &headerValue, tmx::messages::simulation::ExternalObject &simExternalObj)
{
if (headerValue.isMember("seq") && headerValue["seq"].isUInt())
{
Expand All @@ -215,7 +211,7 @@ namespace tmx::utils::sim
}
}

void SimulationExternalObjectConverter::populateSimExternalObjectPose(const Json::Value &poseValue, simulation::ExternalObject &simExternalObj)
void SimulationExternalObjectConverter::populateSimExternalObjectPose(const Json::Value &poseValue, tmx::messages::simulation::ExternalObject &simExternalObj)
{
if (poseValue.isMember("pose") && poseValue["pose"].isMember("position") && poseValue["pose"]["position"].isObject())
{
Expand Down Expand Up @@ -258,13 +254,13 @@ namespace tmx::utils::sim
if (poseValue.isMember("covariance") && poseValue["covariance"].isArray())
{
Json::Value covarianceArrayValue = poseValue["covariance"];
std::vector<simulation::Covariance> covarianceV;
std::vector<tmx::messages::simulation::Covariance> covarianceV;
populateSimCovarianceArray(covarianceArrayValue, covarianceV);
simExternalObj.set_PoseCovariance(covarianceV);
}
}

void SimulationExternalObjectConverter::populateSimExternalObjectVelocity(const Json::Value &velocityValue, simulation::ExternalObject &simExternalObj)
void SimulationExternalObjectConverter::populateSimExternalObjectVelocity(const Json::Value &velocityValue, tmx::messages::simulation::ExternalObject &simExternalObj)
{
if (velocityValue.isMember("twist") && velocityValue["twist"].isMember("linear") && velocityValue["twist"]["linear"].isObject())
{
Expand Down Expand Up @@ -306,13 +302,13 @@ namespace tmx::utils::sim
if (velocityValue.isMember("covariance") && velocityValue["covariance"].isArray())
{
Json::Value covarianceArrayValue = velocityValue["covariance"];
std::vector<simulation::Covariance> covarianceV;
std::vector<tmx::messages::simulation::Covariance> covarianceV;
populateSimCovarianceArray(covarianceArrayValue, covarianceV);
simExternalObj.set_VelocityCovariance(covarianceV);
}
}

void SimulationExternalObjectConverter::populateSimExternalObjectSize(const Json::Value &sizeValue, simulation::ExternalObject &simExternalObj)
void SimulationExternalObjectConverter::populateSimExternalObjectSize(const Json::Value &sizeValue, tmx::messages::simulation::ExternalObject &simExternalObj)
{
if (sizeValue.isMember("x"))
{
Expand All @@ -328,80 +324,96 @@ namespace tmx::utils::sim
}
}

void SimulationExternalObjectConverter::populateSimCovarianceArray(const Json::Value &covarianceArrayValue, std::vector<simulation::Covariance> &covarianceV)
void SimulationExternalObjectConverter::populateSimCovarianceArray(const Json::Value &covarianceArrayValue, std::vector<tmx::messages::simulation::Covariance> &covarianceV)
{
for (auto itr = covarianceArrayValue.begin(); itr != covarianceArrayValue.end(); itr++)
{
simulation::Covariance covariance(itr->asDouble());
covarianceV.push_back(covariance);
}
std::for_each(covarianceArrayValue.begin(), covarianceArrayValue.end(), [&covarianceV](const auto &item)
{ tmx::messages::simulation::Covariance covariance(item.asDouble());
covarianceV.push_back(covariance); });
}

simulation::OBJECT_TYPES SimulationExternalObjectConverter::objectTypeStringToEnum(const string &object_type_str)
tmx::messages::simulation::OBJECT_TYPES SimulationExternalObjectConverter::objectTypeStringToEnum(const std::string &object_type_str)
{
simulation::OBJECT_TYPES object_type = simulation::OBJECT_TYPES::UNKNOWN;
tmx::messages::simulation::OBJECT_TYPES object_type = tmx::messages::simulation::OBJECT_TYPES::UNKNOWN;
try
{
int object_type_int = stoi(object_type_str);
switch (object_type_int)
{
case simulation::OBJECT_TYPES::LARGE_VEHICLE:
object_type = simulation::OBJECT_TYPES::LARGE_VEHICLE;
case tmx::messages::simulation::OBJECT_TYPES::LARGE_VEHICLE:
object_type = tmx::messages::simulation::OBJECT_TYPES::LARGE_VEHICLE;
break;
case simulation::OBJECT_TYPES::MOTORCYCLE:
object_type = simulation::OBJECT_TYPES::MOTORCYCLE;

case tmx::messages::simulation::OBJECT_TYPES::MOTORCYCLE:
object_type = tmx::messages::simulation::OBJECT_TYPES::MOTORCYCLE;
break;
case simulation::OBJECT_TYPES::PEDESTRIAN:
object_type = simulation::OBJECT_TYPES::PEDESTRIAN;
case simulation::OBJECT_TYPES::SMALL_VEHICLE:
object_type = simulation::OBJECT_TYPES::SMALL_VEHICLE;

case tmx::messages::simulation::OBJECT_TYPES::PEDESTRIAN:
object_type = tmx::messages::simulation::OBJECT_TYPES::PEDESTRIAN;
break;

case tmx::messages::simulation::OBJECT_TYPES::SMALL_VEHICLE:
object_type = tmx::messages::simulation::OBJECT_TYPES::SMALL_VEHICLE;
break;

default:
object_type = simulation::OBJECT_TYPES::UNKNOWN;
object_type = tmx::messages::simulation::OBJECT_TYPES::UNKNOWN;
break;
}
}
catch (exception &err)
catch (std::exception &err)
{
object_type = simulation::OBJECT_TYPES::UNKNOWN;
object_type = tmx::messages::simulation::OBJECT_TYPES::UNKNOWN;
}
return object_type;
}

simulation::PRESENCE_VECTOR_TYPES SimulationExternalObjectConverter::presenceVectorIntToEnum(uint16_t presence_vector)
tmx::messages::simulation::PRESENCE_VECTOR_TYPES SimulationExternalObjectConverter::presenceVectorIntToEnum(uint16_t presence_vector)
{
simulation::PRESENCE_VECTOR_TYPES presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::UNAVAILABLE;
tmx::messages::simulation::PRESENCE_VECTOR_TYPES presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::UNAVAILABLE;
switch (presence_vector)
{
case simulation::PRESENCE_VECTOR_TYPES::BSM_ID_PRESENCE_VECTOR:
presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::BSM_ID_PRESENCE_VECTOR;
case tmx::messages::simulation::PRESENCE_VECTOR_TYPES::BSM_ID_PRESENCE_VECTOR:
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::BSM_ID_PRESENCE_VECTOR;
break;
case simulation::PRESENCE_VECTOR_TYPES::CONFIDENCE_PRESENCE_VECTOR:
presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::CONFIDENCE_PRESENCE_VECTOR;

case tmx::messages::simulation::PRESENCE_VECTOR_TYPES::CONFIDENCE_PRESENCE_VECTOR:
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::CONFIDENCE_PRESENCE_VECTOR;
break;
case simulation::PRESENCE_VECTOR_TYPES::DYNAMIC_OBJ_PRESENCE:
presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::DYNAMIC_OBJ_PRESENCE;

case tmx::messages::simulation::PRESENCE_VECTOR_TYPES::DYNAMIC_OBJ_PRESENCE:
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::DYNAMIC_OBJ_PRESENCE;
break;
case simulation::PRESENCE_VECTOR_TYPES::OBJECT_TYPE_PRESENCE_VECTOR:
presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::OBJECT_TYPE_PRESENCE_VECTOR;

case tmx::messages::simulation::PRESENCE_VECTOR_TYPES::OBJECT_TYPE_PRESENCE_VECTOR:
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::OBJECT_TYPE_PRESENCE_VECTOR;
break;

case tmx::messages::simulation::PRESENCE_VECTOR_TYPES::POSE_PRESENCE_VECTOR:
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::POSE_PRESENCE_VECTOR;
break;
case simulation::PRESENCE_VECTOR_TYPES::POSE_PRESENCE_VECTOR:
presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::POSE_PRESENCE_VECTOR;

case tmx::messages::simulation::PRESENCE_VECTOR_TYPES::PREDICTION_PRESENCE_VECTOR:
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::PREDICTION_PRESENCE_VECTOR;
break;
case simulation::PRESENCE_VECTOR_TYPES::PREDICTION_PRESENCE_VECTOR:
presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::PREDICTION_PRESENCE_VECTOR;

case tmx::messages::simulation::PRESENCE_VECTOR_TYPES::SIZE_PRESENCE_VECTOR:
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::SIZE_PRESENCE_VECTOR;
break;
case simulation::PRESENCE_VECTOR_TYPES::SIZE_PRESENCE_VECTOR:
presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::SIZE_PRESENCE_VECTOR;

case tmx::messages::simulation::PRESENCE_VECTOR_TYPES::VELOCITY_INST_PRESENCE_VECTOR:
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::VELOCITY_INST_PRESENCE_VECTOR;
break;
case simulation::PRESENCE_VECTOR_TYPES::VELOCITY_INST_PRESENCE_VECTOR:
presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::VELOCITY_INST_PRESENCE_VECTOR;

case tmx::messages::simulation::PRESENCE_VECTOR_TYPES::VELOCITY_PRESENCE_VECTOR:
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::VELOCITY_PRESENCE_VECTOR;
break;
case simulation::PRESENCE_VECTOR_TYPES::VELOCITY_PRESENCE_VECTOR:
presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::VELOCITY_PRESENCE_VECTOR;

case tmx::messages::simulation::PRESENCE_VECTOR_TYPES::ID_PRESENCE_VECTOR:
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::ID_PRESENCE_VECTOR;
break;

default:
presence_vector_enum = simulation::PRESENCE_VECTOR_TYPES::UNAVAILABLE;
presence_vector_enum = tmx::messages::simulation::PRESENCE_VECTOR_TYPES::UNAVAILABLE;
break;
}
return presence_vector_enum;
Expand Down
22 changes: 10 additions & 12 deletions src/tmx/TmxUtils/src/simulation/SimulationExternalObjectConverter.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,25 @@
#include <iostream>
#include <simulation/ExternalObject.h>

using namespace tmx::messages;
using namespace std;
namespace tmx::utils::sim
{

class SimulationExternalObjectConverter
{
private:
static void populateSimExternalObjectMetadata(const Json::Value &metadataValue, simulation::ExternalObject &simExternalObj);
static void populateSimExternalObjectHeader(const Json::Value &headerValue, simulation::ExternalObject &simExternalObj);
static void populateSimExternalObjectPose(const Json::Value &poseValue, simulation::ExternalObject &simExternalObj);
static void populateSimExternalObjectVelocity(const Json::Value &velocityValue, simulation::ExternalObject &simExternalObj);
static void populateSimExternalObjectSize(const Json::Value &sizeValue, simulation::ExternalObject &simExternalObj);
static void populateSimCovarianceArray(const Json::Value &covarianceArrayValue, std::vector<simulation::Covariance> &covarianceV);
static simulation::OBJECT_TYPES objectTypeStringToEnum(const string& object_type_str);
static simulation::PRESENCE_VECTOR_TYPES presenceVectorIntToEnum(uint16_t presence_vector);
static void populateSimExternalObjectMetadata(const Json::Value &metadataValue, tmx::messages::simulation::ExternalObject &simExternalObj);
static void populateSimExternalObjectHeader(const Json::Value &headerValue, tmx::messages::simulation::ExternalObject &simExternalObj);
static void populateSimExternalObjectPose(const Json::Value &poseValue, tmx::messages::simulation::ExternalObject &simExternalObj);
static void populateSimExternalObjectVelocity(const Json::Value &velocityValue, tmx::messages::simulation::ExternalObject &simExternalObj);
static void populateSimExternalObjectSize(const Json::Value &sizeValue, tmx::messages::simulation::ExternalObject &simExternalObj);
static void populateSimCovarianceArray(const Json::Value &covarianceArrayValue, std::vector<tmx::messages::simulation::Covariance> &covarianceV);
static tmx::messages::simulation::OBJECT_TYPES objectTypeStringToEnum(const std::string& object_type_str);
static tmx::messages::simulation::PRESENCE_VECTOR_TYPES presenceVectorIntToEnum(uint16_t presence_vector);

public:
SimulationExternalObjectConverter() = default;
~SimulationExternalObjectConverter() = default;
static string simExternalObjToJsonStr(simulation::ExternalObject &simExternalObj);
static void jsonToSimExternalObj(const string &jsonStr, simulation::ExternalObject &simExternalObj);
static std::string simExternalObjToJsonStr(tmx::messages::simulation::ExternalObject &simExternalObj);
static void jsonToSimExternalObj(const std::string &jsonStr, tmx::messages::simulation::ExternalObject &simExternalObj);
};
}
Loading

0 comments on commit 4e6aa43

Please sign in to comment.