mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 16:56:53 +08:00
Ref T557 Metaclass flag to preserve measurement unit when marshalling PQ's in flight plans.
This commit is contained in:
@@ -327,6 +327,12 @@ namespace BlackMisc
|
||||
return variant;
|
||||
}
|
||||
|
||||
BlackMisc::Aviation::CFlightPlan CTestService::pingFlightPlan(const BlackMisc::Aviation::CFlightPlan &flightPlan) const
|
||||
{
|
||||
if (m_verbose) out() << "Pid: " << CTestService::getPid() << " info: " << flightPlan << endl;
|
||||
return flightPlan;
|
||||
}
|
||||
|
||||
CAtcStationList CTestService::getAtcStationList(int n) const
|
||||
{
|
||||
if (m_verbose) out() << "Pid: " << CTestService::getPid() << " getAtcStationList" << endl;
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "blackmisc/aviation/altitude.h"
|
||||
#include "blackmisc/aviation/atcstation.h"
|
||||
#include "blackmisc/aviation/atcstationlist.h"
|
||||
#include "blackmisc/aviation/flightplan.h"
|
||||
#include "blackmisc/aviation/transponder.h"
|
||||
#include "blackmisc/geo/coordinategeodetic.h"
|
||||
#include "blackmisc/network/client.h"
|
||||
@@ -216,6 +217,9 @@ namespace BlackMisc
|
||||
//! Ping ICAO data object
|
||||
BlackMisc::Aviation::CAircraftIcaoCode pingAircraftIcaoData(const BlackMisc::Aviation::CAircraftIcaoCode &icao) const;
|
||||
|
||||
//! Ping flight plan
|
||||
BlackMisc::Aviation::CFlightPlan pingFlightPlan(const BlackMisc::Aviation::CFlightPlan &flightPlan) const;
|
||||
|
||||
//! Ping CVariant
|
||||
BlackMisc::CVariant pingCVariant(const BlackMisc::CVariant &variant) const;
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "testservice.h"
|
||||
#include "testing.h"
|
||||
#include "blackmisc/test/testdata.h"
|
||||
#include "blackmisc/aviation/flightplan.h"
|
||||
#include <QTextStream>
|
||||
|
||||
class QDBusConnection;
|
||||
@@ -141,6 +142,15 @@ namespace BlackMisc
|
||||
ok = pingCompare(clients, clientsPing, out, verbose, errors);
|
||||
if (verbose) { out << "Pinged client list via interface" << errorInfo(ok) << endl; }
|
||||
|
||||
CFlightPlan flightPlan;
|
||||
flightPlan.setEnrouteTime(CTime(4, CTimeUnit::h()));
|
||||
flightPlan.setFuelTime(CTime(5, CTimeUnit::h()));
|
||||
flightPlan.setCruiseAltitude(CAltitude(10, CAltitude::FlightLevel, CLengthUnit::km()));
|
||||
flightPlan.setCruiseTrueAirspeed(CSpeed(500, CSpeedUnit::km_h()));
|
||||
const CFlightPlan flightPlanPing = testServiceInterface.pingFlightPlan(flightPlan);
|
||||
ok = pingCompare(flightPlan, flightPlanPing, out, verbose, errors);
|
||||
if (verbose) { out << "Pinged flight plan via interface" << errorInfo(ok) << endl; }
|
||||
|
||||
const CVariant cv = CVariant::fromValue(clients);
|
||||
const CVariant cvPing = testServiceInterface.pingCVariant(cv);
|
||||
ok = pingCompare(cv.value<CClientList>(), cvPing.value<CClientList>(), out, verbose, errors);
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "blackmisc/aviation/atcstationlist.h"
|
||||
#include "blackmisc/aviation/callsign.h"
|
||||
#include "blackmisc/aviation/comsystem.h"
|
||||
#include "blackmisc/aviation/flightplan.h"
|
||||
#include "blackmisc/aviation/track.h"
|
||||
#include "blackmisc/aviation/transponder.h"
|
||||
#include "blackmisc/geo/coordinategeodetic.h"
|
||||
@@ -264,6 +265,13 @@ namespace BlackMisc
|
||||
return asyncCallWithArgumentList(QLatin1String("pingIndexVariantMap"), argumentList);
|
||||
}
|
||||
|
||||
QDBusPendingReply<BlackMisc::Aviation::CFlightPlan> pingFlightPlan(const Aviation::CFlightPlan &flightPlan)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(flightPlan);
|
||||
return asyncCallWithArgumentList(QLatin1String("pingFlightPlan"), argumentList);
|
||||
}
|
||||
|
||||
QDBusPendingReply<BlackMisc::Aviation::CAltitude> receiveAltitude(const BlackMisc::Aviation::CAltitude &altitude)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
@@ -382,13 +390,31 @@ namespace BlackMisc
|
||||
template<class ValueObject>
|
||||
static bool pingCompare(const ValueObject &in, const ValueObject &out, QTextStream &ts, bool verbose, int &errors)
|
||||
{
|
||||
const bool equal = (in == out);
|
||||
if (!equal) { errors++; }
|
||||
if (equal && !verbose) { return true; }
|
||||
ts << "I: " << in.toQString() << endl << "O: " << out.toQString() << endl;
|
||||
const bool equal = (in == out && extraCompare(in, out));
|
||||
if (!equal)
|
||||
{
|
||||
errors++;
|
||||
if (verbose) { ts << "I: " << in.toQString() << endl << "O: " << out.toQString() << endl; }
|
||||
}
|
||||
return equal;
|
||||
}
|
||||
|
||||
//! Extra comparison step for some types
|
||||
//! @{
|
||||
template<class ValueObject>
|
||||
static bool extraCompare(const ValueObject &, const ValueObject &) { return true; }
|
||||
|
||||
static bool extraCompare(const BlackMisc::Aviation::CFlightPlan &in, const BlackMisc::Aviation::CFlightPlan &out)
|
||||
{
|
||||
// flight plan: check units are preserved
|
||||
if (in.getEnrouteTime().getUnit() != out.getEnrouteTime().getUnit()) { return false; }
|
||||
if (in.getFuelTime().getUnit() != out.getFuelTime().getUnit()) { return false; }
|
||||
if (in.getCruiseAltitude().getUnit() != out.getCruiseAltitude().getUnit()) { return false; }
|
||||
if (in.getCruiseTrueAirspeed().getUnit() != out.getCruiseTrueAirspeed().getUnit()) { return false; }
|
||||
return true;
|
||||
}
|
||||
//! @}
|
||||
|
||||
//! Error info string
|
||||
static const QString &errorInfo(bool ok);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user