/** * ModuleTests for Msg * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace CentralEffectSimulation { class CesTests : public QObject , protected Buildings::Interface::Fts::SendCesHitOnBuildingRequestHandler , protected TrainingAreaBase::Interface::Fts::SendCesHitRequestHandler { Q_OBJECT public: explicit CesTests(QObject *parent = nullptr); bool init(int domainId, int exerciseId, int testId, int roomId); bool testsSuccessful() const { return m_bTestsSuccessful; } public Q_SLOTS: void startTest(); protected Q_SLOTS: void tryCreateTriggeredExplosion(); void tryCreateExplosionArea(); void tryCreateExplosionSinglePrepared(); void tryCreateExplosionSingle(); void tryCreateAesItemView(); void tryCreateAesItemViewSingleExplosions(); void tryCreateMainStructureElement(); void tryCreateMainFootprint(); void tryCreateChargeType(); void tryCreateAesItemViewBC(AreaEffectSimulation::AesEffectState desiredState = AreaEffectSimulation::AesEffectState_def::EsActivated); void tryCreateAesItemViewSM(); void tryCreateAesItemViewMA(); // //////////////////////// // Participants // //////////////////////// void tryCreateParticipantPosition(); void tryCreateBuildingState(); void tryCreateParticipant(); void tryCreateDynamicParticipantData(); // //////////////////////// // Borderline // //////////////////////// void tryCreateBorderline(); void failExit(const char *reason); inline void failExit(const QString &reason) { failExit(qPrintable(reason)); } void testTimeout() { failExit("Test timeout"); } void ExitSuccess(); private: void onSendCesHitOnBuildingRequest(const rti::core::SampleIdentity &cookie, const Buildings::SendCesHitOnBuildingRequest &request) override; void onSendCesHitRequest(const rti::core::SampleIdentity &cookie, const TrainingAreaBase::SendCesHitRequest &request) override; void checkParticipantEvent(); private: // structs struct Participant { int participantId; int equipmentNumber; int relX; int relY; }; private: std::shared_ptr m_ddsConnector; std::shared_ptr m_ddsConnector42; std::shared_ptr m_aesDts; std::shared_ptr m_ismDts; std::shared_ptr m_pdmDts; std::shared_ptr m_ppmDts; std::shared_ptr m_bldDts; std::shared_ptr m_bldFts; std::shared_ptr m_tabFts; std::shared_ptr m_cesDtc; bool m_bTestsSuccessful; LtsCoordTrans::UtmCoordinate m_housePos; NGL::INGLLogger &m_logger; int m_testId; int m_buildingId; int m_roomId; int m_moutObjectId; int m_chargeTypeId; int m_participantIndex; QVector m_participants; int m_originatorParticipantId; int m_countHitOnBuildingReply; int m_aesItemId; AreaEffectSimulation::AesType m_aesType; InfrastructureManagement::MainStructureElement m_mse; AreaEffectSimulation::AesItemView m_aiv; AreaEffectSimulation::ExplosionSingle m_es; QHash m_expectedPosition; QPointF m_explosionSingle; int m_replyEnterFunctionalArea; }; } // namespace CentralEffectSimulation