From 4d7468f913a7bf1bda967b673ebd3f33698dd22e Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 16 Apr 2020 23:52:36 +0200 Subject: [PATCH] [FSD] Check attributes of full JSON parts --- src/blackcore/fsd/fsdclient.cpp | 4 +++- src/blackmisc/aviation/aircraftparts.h | 3 +++ src/blackmisc/simulation/remoteaircraftprovider.cpp | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/blackcore/fsd/fsdclient.cpp b/src/blackcore/fsd/fsdclient.cpp index 8e39d4e59..b7b72ae64 100644 --- a/src/blackcore/fsd/fsdclient.cpp +++ b/src/blackcore/fsd/fsdclient.cpp @@ -170,6 +170,7 @@ namespace BlackCore m_ownAirlineIcaoCode = ownAircraft.getAirlineIcaoCode(); /* use setLiveryAndModelString + No longer do it here, use setLiveryAndModelString m_ownLivery = ownAircraft.getModel().getSwiftLiveryString(m_simTypeInfo); m_ownModelString = ownAircraft.getModelString(); m_sendLiveryString = true; @@ -1207,6 +1208,7 @@ namespace BlackCore if (packet == JsonPackets::aircraftConfigRequest()) { // this MUST work for NOT IN RANGE aircraft as well + // Here we send our OWN parts QJsonObject config = this->getOwnAircraftParts().toJson(); config.insert(CAircraftParts::attributeNameIsFullJson(), true); QString data = QJsonDocument(QJsonObject { { "config", config } }).toJson(QJsonDocument::Compact); @@ -1253,7 +1255,7 @@ namespace BlackCore Capabilities capabilities = Capabilities::None; for (int i = 0; i < clientResponse.m_responseData.size(); ++i) { - QString keyValuePair = clientResponse.m_responseData.at(i); + const QString keyValuePair = clientResponse.m_responseData.at(i); if (keyValuePair.count('=') != 1) { continue; } const QStringList split = keyValuePair.split('='); diff --git a/src/blackmisc/aviation/aircraftparts.h b/src/blackmisc/aviation/aircraftparts.h index d5d3bc1a5..ac7357492 100644 --- a/src/blackmisc/aviation/aircraftparts.h +++ b/src/blackmisc/aviation/aircraftparts.h @@ -191,6 +191,9 @@ namespace BlackMisc //! Attribute name static const QString &attributeNameIsFullJson(); + //! Number of attributes for full JSON + static constexpr int attributesCountFullJson = 7; + private: CAircraftLights m_lights; CAircraftEngineList m_engines; diff --git a/src/blackmisc/simulation/remoteaircraftprovider.cpp b/src/blackmisc/simulation/remoteaircraftprovider.cpp index d11d38e01..65a57811a 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -422,6 +422,13 @@ namespace BlackMisc { if (isFull) { + if (CBuildConfig::isLocalDeveloperDebugBuild()) + { + // validation in dev.env. + const int attributes = jsonObject.size(); + const bool correctCount = (attributes == CAircraftParts::attributesCountFullJson); + BLACK_VERIFY_X(correctCount, Q_FUNC_INFO, "Wrong full aircraft parts"); + } parts.convertFromJson(jsonObject); } else