From 0107d245239c5c8c6d6d1c966fd9cf3067116b4c Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Thu, 22 Aug 2013 17:56:35 +0100 Subject: [PATCH] create a dummy implementation of INetwork for testing purposes, and use it in the atc list unittest --- src/blackcore/atclistmgr.cpp | 4 ---- src/blackcore/atclistmgr.h | 12 ----------- src/blackcore/network.h | 30 ++++++++++++++++++++++++++++ tests/blackcore/blackcoretest.h | 8 -------- tests/blackcore/testnetmediators.cpp | 25 ++++++++++++++++------- tests/blackcore/testnetmediators.h | 14 +++++++++++++ 6 files changed, 62 insertions(+), 31 deletions(-) diff --git a/src/blackcore/atclistmgr.cpp b/src/blackcore/atclistmgr.cpp index 5a0a67528..622b0444b 100644 --- a/src/blackcore/atclistmgr.cpp +++ b/src/blackcore/atclistmgr.cpp @@ -6,10 +6,6 @@ #include "atclistmgr.h" #include "network.h" -BlackCore::CAtcListManager::CAtcListManager(const BlackCoreTest::EnableTesting&) -{ -} - BlackCore::CAtcListManager::CAtcListManager() { INetwork *net = BlackMisc::IContext::getInstance().singleton(); diff --git a/src/blackcore/atclistmgr.h b/src/blackcore/atclistmgr.h index 9079b9ba4..bbd4af67f 100644 --- a/src/blackcore/atclistmgr.h +++ b/src/blackcore/atclistmgr.h @@ -13,11 +13,6 @@ #include "blackmisc/atclist.h" #include -namespace BlackCoreTest -{ - class EnableTesting; -} - namespace BlackCore { @@ -79,13 +74,6 @@ namespace BlackCore void clear(); /*! \} */ - public: - /*! - * Constructor that does not connect INetwork signals to CAtcListManager slots. - * \warning Only used for testing purposes. - */ - explicit CAtcListManager(const BlackCoreTest::EnableTesting&); - private: BlackMisc::CAtcList m_list; }; diff --git a/src/blackcore/network.h b/src/blackcore/network.h index 87164e5aa..2264ae6c7 100644 --- a/src/blackcore/network.h +++ b/src/blackcore/network.h @@ -104,6 +104,36 @@ namespace BlackCore //TODO void windDataReceived(...); }; + /*! + * Dummy implementation of INetwork used for testing. + */ + class NetworkDummy : public INetwork + { + public: //INetwork slots overrides + virtual void setServerDetails(const QString&, quint16) {} + virtual void setUserCredentials(const QString&, const QString&) {} + virtual void setCallsign(const QString&) {} + virtual void setRealName(const QString&) {} + virtual void initiateConnection() {} + virtual void terminateConnection() {} + virtual void sendPrivateTextMessage(const QString&, const QString&) {} + virtual void sendRadioTextMessage(const QVector&, const QString&) {} + virtual void sendIpQuery() {} + virtual void sendFreqQuery(const QString&) {} + virtual void sendServerQuery(const QString&) {} + virtual void sendAtcQuery(const QString&) {} + virtual void sendAtisQuery(const QString&) {} + virtual void sendNameQuery(const QString&) {} + virtual void sendCapabilitiesQuery(const QString&) {} + virtual void replyToFreqQuery(const QString&, const BlackMisc::PhysicalQuantities::CFrequency&) {} + virtual void replyToNameQuery(const QString&, const QString&) {} + virtual void requestPlaneInfo(const QString&) {} + virtual void sendPlaneInfo(const QString&, const QString&, const QString&, const QString&) {} + virtual void ping(const QString&) {} + virtual void requestMetar(const QString&) {} + virtual void requestWeatherData(const QString&) {} + }; + } //namespace BlackCore #endif //BLACKCORE_NETWORK_H diff --git a/tests/blackcore/blackcoretest.h b/tests/blackcore/blackcoretest.h index 825995de7..8f2534db8 100644 --- a/tests/blackcore/blackcoretest.h +++ b/tests/blackcore/blackcoretest.h @@ -13,12 +13,4 @@ * Add any new tests to TestMain::unitMain as shown there. */ -namespace BlackCoreTest -{ - /*! - * An "option type" used to alter the construction of objects under test. - */ - class EnableTesting {}; -} - #endif // guard diff --git a/tests/blackcore/testnetmediators.cpp b/tests/blackcore/testnetmediators.cpp index 6a2c765a2..6941ad0e7 100644 --- a/tests/blackcore/testnetmediators.cpp +++ b/tests/blackcore/testnetmediators.cpp @@ -4,6 +4,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "testnetmediators.h" +#include "blackmisc/context.h" #include namespace BlackCoreTest @@ -14,26 +15,36 @@ namespace BlackCoreTest using namespace BlackMisc::PhysicalQuantities; using namespace BlackMisc::Geo; + void CTestNetMediators::initTestCase() + { + BlackMisc::IContext::getInstance().setSingleton(&m_networkDummy); + } + + void CTestNetMediators::cleanupTestCase() + { + BlackMisc::IContext::getInstance().releaseSingleton(); + } + void CTestNetMediators::atcListManagerTest() { - CAtcListManager mgr ( (EnableTesting()) ); //extra pair of parentheses to disambiguate most vexing parse + CAtcListManager mgr; AtcListConsumer cons; QObject::connect(&mgr, &IAtcListManager::listChanged, &cons, &AtcListConsumer::listChanged); QVERIFY(cons.m_list.constMap().size() == 0); - mgr.update("EGLL_TWR", CFrequency(118.7, CFrequencyUnit::MHz()), CCoordinateGeodetic(51.4775, 0.46139, 0), CLength(50, CLengthUnit::m())); + emit m_networkDummy.atcPositionUpdate("EGLL_TWR", CFrequency(118.7, CFrequencyUnit::MHz()), CCoordinateGeodetic(51.4775, 0.46139, 0), CLength(50, CLengthUnit::m())); QVERIFY(cons.m_list.constMap().size() == 1); - mgr.update("EGLL_GND", CFrequency(121.9, CFrequencyUnit::MHz()), CCoordinateGeodetic(51.4775, 0.46139, 0), CLength(20, CLengthUnit::m())); + emit m_networkDummy.atcPositionUpdate("EGLL_GND", CFrequency(121.9, CFrequencyUnit::MHz()), CCoordinateGeodetic(51.4775, 0.46139, 0), CLength(20, CLengthUnit::m())); QVERIFY(cons.m_list.constMap().size() == 2); - mgr.update("EGLL_TWR", CFrequency(118.5, CFrequencyUnit::MHz()), CCoordinateGeodetic(51.4775, 0.46139, 0), CLength(50, CLengthUnit::m())); + emit m_networkDummy.atcPositionUpdate("EGLL_TWR", CFrequency(118.5, CFrequencyUnit::MHz()), CCoordinateGeodetic(51.4775, 0.46139, 0), CLength(50, CLengthUnit::m())); QVERIFY(cons.m_list.constMap().size() == 2); - mgr.remove("EGLL_TWR"); + emit m_networkDummy.atcDisconnected("EGLL_TWR"); QVERIFY(cons.m_list.constMap().size() == 1); - mgr.clear(); + emit m_networkDummy.connectionStatusDisconnected(); QVERIFY(cons.m_list.constMap().size() == 0); - mgr.update("EGLL_TWR", CFrequency(118.5, CFrequencyUnit::MHz()), CCoordinateGeodetic(51.4775, 0.46139, 0), CLength(50, CLengthUnit::m())); + emit m_networkDummy.atcPositionUpdate("EGLL_TWR", CFrequency(118.5, CFrequencyUnit::MHz()), CCoordinateGeodetic(51.4775, 0.46139, 0), CLength(50, CLengthUnit::m())); QVERIFY(cons.m_list.constMap().contains("EGLL_TWR")); QVERIFY(cons.m_list.constMap()["EGLL_TWR"].getCallsign() == "EGLL_TWR"); QVERIFY(cons.m_list.constMap()["EGLL_TWR"].getFrequency() == CFrequency(118.5, CFrequencyUnit::MHz())); diff --git a/tests/blackcore/testnetmediators.h b/tests/blackcore/testnetmediators.h index 210eff6c7..7cfac4993 100644 --- a/tests/blackcore/testnetmediators.h +++ b/tests/blackcore/testnetmediators.h @@ -8,6 +8,7 @@ #include "blackcore/atclistmgr.h" #include "blackcoretest.h" +#include "blackcore/network.h" #include namespace BlackCoreTest @@ -28,10 +29,23 @@ namespace BlackCoreTest explicit CTestNetMediators(QObject *parent = 0) : QObject(parent) {} private slots: + /*! + * Called before the first test. + */ + void initTestCase(); + /*! * Test CAtcListManager */ void atcListManagerTest(); + + /*! + * Called after the last test. + */ + void cleanupTestCase(); + + private: + BlackCore::NetworkDummy m_networkDummy; }; /*!