/** * @file test_flm_dtc_impl_custom.cpp * @brief Tests für DtcImplCustom (flm_dtc_impl_custom.h) * * DtcImplCustom-Instanzen benötigen einen live DDSConnector (Domain * Participant); Verhaltenstests laufen daher nur im Integrationstest flmTests * (docker: make flmTests). Diese Unit-Tests sichern die Qt6-relevante Struktur * ab: Q_OBJECT-Klasse, Vererbung vom generierten Interface::DtcImpl, * Konstruktor-Signatur und die inline Folder-Name-Methoden. */ #include #include #include /** * @test DtcImplCustom muss final sein, vom generierten Interface::DtcImpl * erben und (wegen des Q_OBJECT-Makros) QObject-abgeleitet sein — * moc verifiziert die Klasse beim Bauen von migration_tests. */ TEST(flm_dtc_impl_custom, IsFinalQObjectDerivedFromGeneratedDtcImpl) { static_assert(std::is_final::value, "DtcImplCustom muss final sein"); static_assert(std::is_base_of::value, "DtcImplCustom muss von Interface::DtcImpl erben"); static_assert(std::is_base_of::value, "Q_OBJECT erfordert eine QObject-Basis"); SUCCEED(); } /** * @test Der Konstruktor muss den shared_ptr aus * der generierten DtcImpl-Basis durchreichen (inherited ctor). */ TEST(flm_dtc_impl_custom, ConstructorTakesDdsConnector) { static_assert( std::is_constructible &>::value, "DtcImplCustom muss aus const std::shared_ptr& konstruierbar sein"); SUCCEED(); } /** * @test Die in flm_dtc_impl_custom.h inline implementierten Folder-Name- * Formatierungen ("$EX_"/"$PY_"/"$PH_" + Id) müssen als const-Methoden * mit QString-Rückgabe deklariert sein. (Aufruf braucht eine Instanz * mit live DDS — siehe Klassenkommentar.) */ TEST(flm_dtc_impl_custom, InlineFolderNameSignatures) { using FileManagement::Interface::DtcImplCustom; static_assert(std::is_same().getExerciseFolderName(1))>::value, "getExerciseFolderName muss const QString(int) sein"); static_assert(std::is_same().getPartyFolderName(1))>::value, "getPartyFolderName muss const QString(int) sein"); static_assert(std::is_same().getPhaseFolderName(1))>::value, "getPhaseFolderName muss const QString(int) sein"); SUCCEED(); }