diff --git a/tests/blackcore/testblackcoremain.cpp b/tests/blackcore/testblackcoremain.cpp index 40bd69881..43eb56fa8 100644 --- a/tests/blackcore/testblackcoremain.cpp +++ b/tests/blackcore/testblackcoremain.cpp @@ -9,6 +9,7 @@ #include "testblackcoremain.h" #include "testinterpolator.h" +#include "testreaders.h" #include "testnetwork.h" namespace BlackCoreTest @@ -24,6 +25,10 @@ namespace BlackCoreTest CTestInterpolator interpolatorTests; status |= QTest::qExec(&interpolatorTests, argc, argv); } + { + CTestReaders readersTests; + status |= QTest::qExec(&readersTests, argc, argv); + } { CTestNetwork networkTests; status |= QTest::qExec(&networkTests, argc, argv); diff --git a/tests/blackcore/testnetwork.cpp b/tests/blackcore/testnetwork.cpp index 85e6022a8..df5e38c6e 100644 --- a/tests/blackcore/testnetwork.cpp +++ b/tests/blackcore/testnetwork.cpp @@ -29,7 +29,7 @@ void BlackCoreTest::CTestNetwork::networkTest(BlackCore::INetwork *net) .send(&INetwork::presetCallsign, "SWIFT") .send(&INetwork::presetIcaoCodes, CAircraftIcaoData( CAircraftIcaoCode("C172", "L1P"), - CAirlineIcaoCode("YYY"), "white")) + CAirlineIcaoCode("YYY"))) .send(&INetwork::initiateConnection) .expect(&INetwork::connectionStatusChanged, [](INetwork::ConnectionStatus, INetwork::ConnectionStatus newStatus) { @@ -38,6 +38,7 @@ void BlackCoreTest::CTestNetwork::networkTest(BlackCore::INetwork *net) }) .expect(&INetwork::connectionStatusChanged, [](INetwork::ConnectionStatus, INetwork::ConnectionStatus newStatus) { + //! \todo verify how we want to handle the situation if the connect fails. On Jenkins that would cause a failed test case and hence a failed build QVERIFY(newStatus == INetwork::Connected); qDebug() << "CONNECTED"; }) diff --git a/tests/blackcore/testnetwork.h b/tests/blackcore/testnetwork.h index 59b885436..3dacc53bd 100644 --- a/tests/blackcore/testnetwork.h +++ b/tests/blackcore/testnetwork.h @@ -39,9 +39,9 @@ namespace BlackCoreTest //! Common part used by all tests. void networkTest(BlackCore::INetwork *); - BlackCore::CNetworkVatlib m_networkVatlib ; + BlackCore::CNetworkVatlib m_networkVatlib ; //!< vatlib instance }; -} //namespace BlackCoreTest +} //namespace #endif // guard diff --git a/tests/blackcore/testreaders.cpp b/tests/blackcore/testreaders.cpp new file mode 100644 index 000000000..f59638080 --- /dev/null +++ b/tests/blackcore/testreaders.cpp @@ -0,0 +1,95 @@ +/* Copyright (C) 2015 + * swift project Community / Contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +#include "testreaders.h" +#include "expect.h" +#include "blackcore/reader_settings.h" +#include "blackmisc/networkutils.h" +#include "blackmisc/aviation/aircrafticaocode.h" +#include "blackmisc/aviation/airlineicaocode.h" + +using namespace BlackCore; +using namespace BlackMisc; +using namespace BlackMisc::Aviation; +using namespace BlackMisc::Simulation; + +namespace BlackCoreTest +{ + + CTestReaders::CTestReaders(QObject *parent) : + QObject(parent), + m_icaoReader(this, + CReaderSettings::instance().protocolIcaoReader(), + CReaderSettings::instance().serverIcaoReader(), + CReaderSettings::instance().baseUrlIcaoReader() + ), + m_modelReader(this, + CReaderSettings::instance().protocolModelReader(), + CReaderSettings::instance().serverModelReader(), + CReaderSettings::instance().baseUrlModelReader() + ) + { } + + void CTestReaders::readIcaoData() + { + QString server(CReaderSettings::instance().serverIcaoReader()); + if (!pingServer(server)) { return; } + m_icaoReader.start(); + Expect e(&this->m_icaoReader); + EXPECT_UNIT(e) + .send(&CIcaoDataReader::readInBackgroundThread) + .expect(&CIcaoDataReader::readAll, [server]() + { + qDebug() << "Read ICAO data from" << server; + }) + .wait(10); + + QVERIFY2(this->m_icaoReader.getAircraftIcaoCodesCount() > 0, "No aircraft ICAOs"); + QVERIFY2(this->m_icaoReader.getAirlineIcaoCodesCount() > 0, "No airline ICAOs"); + + CAircraftIcaoCode aircraftIcao(this->m_icaoReader.getAircraftIcaoCodes().front()); + CAirlineIcaoCode airlineIcao(this->m_icaoReader.getAirlineIcaoCodes().front()); + QVERIFY2(aircraftIcao.hasCompleteData(), "Missing data for aircraft ICAO"); + QVERIFY2(airlineIcao.hasCompleteData(), "Missing data for airline ICAO"); + } + + void CTestReaders::readModelData() + { + QString server(CReaderSettings::instance().serverModelReader()); + if (!pingServer(server)) { return; } + m_modelReader.start(); + Expect e(&this->m_modelReader); + EXPECT_UNIT(e) + .send(&CModelDataReader::readInBackgroundThread) + .expect(&CModelDataReader::readAll, [server]() + { + qDebug() << "Read model data from" << server; + }) + .wait(10); + + QVERIFY2(this->m_modelReader.getDistributorsCount() > 0, "No distributors"); + QVERIFY2(this->m_modelReader.getLiveriesCount() > 0, "No liveries"); + + CLivery livery(this->m_modelReader.getLiveries().front()); + CDistributor distributor(this->m_modelReader.getDistributors().front()); + QVERIFY2(livery.hasCompleteData(), "Missing data for livery"); + QVERIFY2(distributor.hasCompleteData(), "Missing data for distributor"); + } + + bool CTestReaders::pingServer(const QString &server) + { + QString m; + if (!CNetworkUtils::canConnect(server, 80, m, 2500)) + { + qWarning() << "Skipping unit test as" << server << "cannot be connected"; + return false; + } + return true; + } +} // ns diff --git a/tests/blackcore/testreaders.h b/tests/blackcore/testreaders.h new file mode 100644 index 000000000..2df2faa83 --- /dev/null +++ b/tests/blackcore/testreaders.h @@ -0,0 +1,50 @@ +/* Copyright (C) 2015 + * swift project community / contributors + * + * This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level + * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project, + * including this file, may be copied, modified, propagated, or distributed except according to the terms + * contained in the LICENSE file. + */ + +//! \file + +#ifndef BLACKCORETEST_TESTREADERS_H +#define BLACKCORETEST_TESTREADERS_H + +#include "blackcore/network_vatlib.h" +#include "blackcore/modeldatareader.h" +#include "blackcore/icaodatareader.h" +#include + +namespace BlackCoreTest +{ + /** + * Test data readers (for bookings, JSON, etc.) + */ + class CTestReaders : public QObject + { + Q_OBJECT + + public: + //! Constructor. + explicit CTestReaders(QObject *parent = nullptr); + + private slots: + //! Read ICAO data + void readIcaoData(); + + //! Read model data + void readModelData(); + + private: + BlackCore::CIcaoDataReader m_icaoReader; + BlackCore::CModelDataReader m_modelReader; + + //! Test if server is available + static bool pingServer(const QString &server); + }; + +} //namespace + +#endif // guard diff --git a/tests/blackmisc/testaviation.cpp b/tests/blackmisc/testaviation.cpp index 05347bb3d..c893fa02b 100644 --- a/tests/blackmisc/testaviation.cpp +++ b/tests/blackmisc/testaviation.cpp @@ -165,8 +165,7 @@ namespace BlackMiscTest CAircraftIcaoData icao1( CAircraftIcaoCode("C172", "L1P"), - CAirlineIcaoCode("GA"), - "0000ff" + CAirlineIcaoCode("GA") ); CAircraftIcaoData icao2(icao1); QVERIFY2(icao1 == icao2, "ICAOs shall be equal"); diff --git a/tests/blackmisc/testidentifier.h b/tests/blackmisc/testidentifier.h index b4219f0ee..32bf13fa2 100644 --- a/tests/blackmisc/testidentifier.h +++ b/tests/blackmisc/testidentifier.h @@ -27,6 +27,7 @@ namespace BlackMiscTest explicit CTestIdentifier(QObject *parent = nullptr) : QObject(parent) {} private slots: + //! Identifier tests void identifierBasics(); };