mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-08-13 13:15:47 +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
|
||||
const CAircraftIcaoCodeList codes = CAircraftIcaoCodeList::fromDatabaseJson(res, false);
|
||||
const CAircraftIcaoCodeList codes = CAircraftIcaoCodeList::fromDatabaseJson(res, true);
|
||||
const int n = codes.size();
|
||||
qint64 latestTimestamp = codes.latestTimestampMsecsSinceEpoch();
|
||||
if (n > 0 && latestTimestamp < 0)
|
||||
@@ -266,7 +266,7 @@ namespace BlackCore
|
||||
emit dataRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFailed, 0);
|
||||
return;
|
||||
}
|
||||
const CAirlineIcaoCodeList codes = CAirlineIcaoCodeList::fromDatabaseJson(res, false);
|
||||
const CAirlineIcaoCodeList codes = CAirlineIcaoCodeList::fromDatabaseJson(res, true);
|
||||
const int n = codes.size();
|
||||
qint64 latestTimestamp = codes.latestTimestampMsecsSinceEpoch();
|
||||
if (n > 0 && latestTimestamp < 0)
|
||||
|
||||
@@ -532,8 +532,8 @@ namespace BlackMisc
|
||||
|
||||
// Amphibian, Glider, Helicopter, Seaplane, Landplane, Tilt wing
|
||||
static const QString validDescriptions = "AGHSLT";
|
||||
// Electric, Jet, Piston, Turpoprop
|
||||
static const QString validEngines = "EJPT";
|
||||
// Electric, Jet, Piston, Turpoprop, and - for no engine
|
||||
static const QString validEngines = "EJPT-";
|
||||
|
||||
if (!validDescriptions.contains(combinedType[0])) { 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
|
||||
{
|
||||
if (icaoOrIata.isEmpty()) { return CAircraftIcaoCodeList(); }
|
||||
|
||||
@@ -54,6 +54,12 @@ namespace BlackMisc
|
||||
//! Find by family
|
||||
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
|
||||
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
|
||||
{
|
||||
if (icaoPattern.hasValidDbKey()) { return icaoPattern; }
|
||||
|
||||
@@ -74,6 +74,12 @@ namespace BlackMisc
|
||||
//! Find by military flag
|
||||
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
|
||||
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->getAirlineIcaoCodesCount() > 0, qUtf8Printable(m2));
|
||||
|
||||
const CAircraftIcaoCode aircraftIcao(this->m_icaoReader->getAircraftIcaoCodes().frontOrDefault());
|
||||
const CAirlineIcaoCode airlineIcao(this->m_icaoReader->getAirlineIcaoCodes().frontOrDefault());
|
||||
QVERIFY2(aircraftIcao.hasDesignator(), "Missing data for aircraft ICAO");
|
||||
QVERIFY2(airlineIcao.hasValidDesignator(), "Missing data for airline ICAO");
|
||||
// reader set to ignore incomplete ICAO data, so sizes must match
|
||||
const CAircraftIcaoCodeList aircraftIcaos = this->m_icaoReader->getAircraftIcaoCodes();
|
||||
const CAirlineIcaoCodeList airlineIcaos = this->m_icaoReader->getAirlineIcaoCodes();
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user