mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-03 16:25:54 +08:00
Based on unit test failure (clang):
* now ignore incomplete entities for airline/aircraft ICAOs from DB * utility functions to find invalid designators * adjusted unit test, avoid taking a random element * and fixed 4 wrong ICAO entries in DB
This commit is contained in:
committed by
Mathew Sutcliffe
parent
4bb29de652
commit
5c32a912f3
@@ -239,7 +239,7 @@ namespace BlackCore
|
|||||||
}
|
}
|
||||||
|
|
||||||
// normally read from special view which already filter incomplete
|
// normally read from special view which already filter incomplete
|
||||||
const CAircraftIcaoCodeList codes = CAircraftIcaoCodeList::fromDatabaseJson(res, false);
|
const CAircraftIcaoCodeList codes = CAircraftIcaoCodeList::fromDatabaseJson(res, true);
|
||||||
const int n = codes.size();
|
const int n = codes.size();
|
||||||
qint64 latestTimestamp = codes.latestTimestampMsecsSinceEpoch();
|
qint64 latestTimestamp = codes.latestTimestampMsecsSinceEpoch();
|
||||||
if (n > 0 && latestTimestamp < 0)
|
if (n > 0 && latestTimestamp < 0)
|
||||||
@@ -266,7 +266,7 @@ namespace BlackCore
|
|||||||
emit dataRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFailed, 0);
|
emit dataRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFailed, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const CAirlineIcaoCodeList codes = CAirlineIcaoCodeList::fromDatabaseJson(res, false);
|
const CAirlineIcaoCodeList codes = CAirlineIcaoCodeList::fromDatabaseJson(res, true);
|
||||||
const int n = codes.size();
|
const int n = codes.size();
|
||||||
qint64 latestTimestamp = codes.latestTimestampMsecsSinceEpoch();
|
qint64 latestTimestamp = codes.latestTimestampMsecsSinceEpoch();
|
||||||
if (n > 0 && latestTimestamp < 0)
|
if (n > 0 && latestTimestamp < 0)
|
||||||
|
|||||||
@@ -532,8 +532,8 @@ namespace BlackMisc
|
|||||||
|
|
||||||
// Amphibian, Glider, Helicopter, Seaplane, Landplane, Tilt wing
|
// Amphibian, Glider, Helicopter, Seaplane, Landplane, Tilt wing
|
||||||
static const QString validDescriptions = "AGHSLT";
|
static const QString validDescriptions = "AGHSLT";
|
||||||
// Electric, Jet, Piston, Turpoprop
|
// Electric, Jet, Piston, Turpoprop, and - for no engine
|
||||||
static const QString validEngines = "EJPT";
|
static const QString validEngines = "EJPT-";
|
||||||
|
|
||||||
if (!validDescriptions.contains(combinedType[0])) { return false; }
|
if (!validDescriptions.contains(combinedType[0])) { return false; }
|
||||||
if (!combinedType[1].isDigit()) { return false; }
|
if (!combinedType[1].isDigit()) { return false; }
|
||||||
|
|||||||
@@ -34,6 +34,22 @@ namespace BlackMisc
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAircraftIcaoCodeList CAircraftIcaoCodeList::findByValidDesignator() const
|
||||||
|
{
|
||||||
|
return this->findBy([](const CAircraftIcaoCode & code)
|
||||||
|
{
|
||||||
|
return code.hasValidDesignator();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
CAircraftIcaoCodeList CAircraftIcaoCodeList::findByInvalidDesignator() const
|
||||||
|
{
|
||||||
|
return this->findBy([](const CAircraftIcaoCode & code)
|
||||||
|
{
|
||||||
|
return !code.hasValidDesignator();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
CAircraftIcaoCodeList CAircraftIcaoCodeList::findByDesignatorOrIataCode(const QString &icaoOrIata) const
|
CAircraftIcaoCodeList CAircraftIcaoCodeList::findByDesignatorOrIataCode(const QString &icaoOrIata) const
|
||||||
{
|
{
|
||||||
if (icaoOrIata.isEmpty()) { return CAircraftIcaoCodeList(); }
|
if (icaoOrIata.isEmpty()) { return CAircraftIcaoCodeList(); }
|
||||||
|
|||||||
@@ -54,6 +54,12 @@ namespace BlackMisc
|
|||||||
//! Find by family
|
//! Find by family
|
||||||
CAircraftIcaoCodeList findByFamily(const QString &family) const;
|
CAircraftIcaoCodeList findByFamily(const QString &family) const;
|
||||||
|
|
||||||
|
//! Ones with a valid designator
|
||||||
|
CAircraftIcaoCodeList findByValidDesignator() const;
|
||||||
|
|
||||||
|
//! Ones with an invalid designator
|
||||||
|
CAircraftIcaoCodeList findByInvalidDesignator() const;
|
||||||
|
|
||||||
//! Find by ICAO/IATA code
|
//! Find by ICAO/IATA code
|
||||||
CAircraftIcaoCodeList findByDesignatorOrIataCode(const QString &icaoOrIata) const;
|
CAircraftIcaoCodeList findByDesignatorOrIataCode(const QString &icaoOrIata) const;
|
||||||
|
|
||||||
|
|||||||
@@ -106,6 +106,22 @@ namespace BlackMisc
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAirlineIcaoCodeList CAirlineIcaoCodeList::findByValidDesignator() const
|
||||||
|
{
|
||||||
|
return this->findBy([](const CAirlineIcaoCode & code)
|
||||||
|
{
|
||||||
|
return code.hasValidDesignator();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
CAirlineIcaoCodeList CAirlineIcaoCodeList::findByInvalidDesignator() const
|
||||||
|
{
|
||||||
|
return this->findBy([](const CAirlineIcaoCode & code)
|
||||||
|
{
|
||||||
|
return !code.hasValidDesignator();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
CAirlineIcaoCode CAirlineIcaoCodeList::smartAirlineIcaoSelector(const CAirlineIcaoCode &icaoPattern, const CCallsign &callsign) const
|
CAirlineIcaoCode CAirlineIcaoCodeList::smartAirlineIcaoSelector(const CAirlineIcaoCode &icaoPattern, const CCallsign &callsign) const
|
||||||
{
|
{
|
||||||
if (icaoPattern.hasValidDbKey()) { return icaoPattern; }
|
if (icaoPattern.hasValidDbKey()) { return icaoPattern; }
|
||||||
|
|||||||
@@ -74,6 +74,12 @@ namespace BlackMisc
|
|||||||
//! Find by military flag
|
//! Find by military flag
|
||||||
CAirlineIcaoCodeList findByMilitary(bool military) const;
|
CAirlineIcaoCodeList findByMilitary(bool military) const;
|
||||||
|
|
||||||
|
//! The ones with a valid designator
|
||||||
|
CAirlineIcaoCodeList findByValidDesignator() const;
|
||||||
|
|
||||||
|
//! The ones with an invalid designator
|
||||||
|
CAirlineIcaoCodeList findByInvalidDesignator() const;
|
||||||
|
|
||||||
//! Best selection by given pattern
|
//! Best selection by given pattern
|
||||||
CAirlineIcaoCode smartAirlineIcaoSelector(const CAirlineIcaoCode &icaoPattern, const CCallsign &callsign) const;
|
CAirlineIcaoCode smartAirlineIcaoSelector(const CAirlineIcaoCode &icaoPattern, const CCallsign &callsign) const;
|
||||||
|
|
||||||
|
|||||||
@@ -81,10 +81,29 @@ namespace BlackCoreTest
|
|||||||
QVERIFY2(this->m_icaoReader->getAircraftIcaoCodesCount() > 0, qUtf8Printable(m1));
|
QVERIFY2(this->m_icaoReader->getAircraftIcaoCodesCount() > 0, qUtf8Printable(m1));
|
||||||
QVERIFY2(this->m_icaoReader->getAirlineIcaoCodesCount() > 0, qUtf8Printable(m2));
|
QVERIFY2(this->m_icaoReader->getAirlineIcaoCodesCount() > 0, qUtf8Printable(m2));
|
||||||
|
|
||||||
const CAircraftIcaoCode aircraftIcao(this->m_icaoReader->getAircraftIcaoCodes().frontOrDefault());
|
// reader set to ignore incomplete ICAO data, so sizes must match
|
||||||
const CAirlineIcaoCode airlineIcao(this->m_icaoReader->getAirlineIcaoCodes().frontOrDefault());
|
const CAircraftIcaoCodeList aircraftIcaos = this->m_icaoReader->getAircraftIcaoCodes();
|
||||||
QVERIFY2(aircraftIcao.hasDesignator(), "Missing data for aircraft ICAO");
|
const CAirlineIcaoCodeList airlineIcaos = this->m_icaoReader->getAirlineIcaoCodes();
|
||||||
QVERIFY2(airlineIcao.hasValidDesignator(), "Missing data for airline ICAO");
|
const CAircraftIcaoCodeList aircraftIcaosValid(aircraftIcaos.findByValidDesignator());
|
||||||
|
const CAirlineIcaoCodeList airlineIcaosValid(airlineIcaos.findByValidDesignator());
|
||||||
|
const CAircraftIcaoCodeList aircraftIcaosInvalid(aircraftIcaos.findByInvalidDesignator());
|
||||||
|
const CAirlineIcaoCodeList airlineIcaosInvalid(airlineIcaos.findByInvalidDesignator());
|
||||||
|
const int aircraftValidSize = aircraftIcaosValid.size();
|
||||||
|
const int aircraftSize = aircraftIcaos.size();
|
||||||
|
const int airlineValidSize = airlineIcaosValid.size();
|
||||||
|
const int airlineSize = airlineIcaos.size();
|
||||||
|
|
||||||
|
if (!aircraftIcaosInvalid.isEmpty())
|
||||||
|
{
|
||||||
|
qDebug() << aircraftIcaosInvalid.toQString();
|
||||||
|
}
|
||||||
|
if (!airlineIcaosInvalid.isEmpty())
|
||||||
|
{
|
||||||
|
qDebug() << airlineIcaosInvalid.toQString();
|
||||||
|
}
|
||||||
|
|
||||||
|
QVERIFY2(aircraftValidSize == aircraftSize, "All aircraft ICAOs must be valid");
|
||||||
|
QVERIFY2(airlineValidSize == airlineSize, "Some airline ICAOs must be valid");
|
||||||
|
|
||||||
CApplication::processEventsFor(2500); // make sure events are processed
|
CApplication::processEventsFor(2500); // make sure events are processed
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user