/** * @file test_nme_enums.cpp * @brief Verhaltenstests für die generierten NmeaManagement-Enumerationen * * Diese Tests prüfen den von CODEGEN_IDL_SVC + rtiddsgen aus nme_service.xml * generierten Header (Lts/Services/NmeaManagement/nme_enums.hpp) aus dem * Build-Tree. Sie sichern die Enum-Form ab, die der migrierte NmeaHandler * (IIXDR-Pfad) direkt nutzt: ServiceControlEnum::{PRESHUTDOWN,SHUTDOWN,STOP} * ohne die legacy *_def-Wrapper (rtiddsgen 7.7 generiert plain enum class). */ #include "NmeaManagement/nme_enums.hpp" #include #include /** * @test ServiceControlEnum muss mit den Werten aus nme_service.xml generiert * werden (PRESHUTDOWN=0, SHUTDOWN=1, STOP=2). */ TEST(nme_enums_Generated, ServiceControlEnumValues) { static_assert(std::is_enum<::NmeaManagement::ServiceControlEnum>::value, "ServiceControlEnum muss aus nme_enums.hpp vorliegen"); static_assert(static_cast(::NmeaManagement::ServiceControlEnum::PRESHUTDOWN) == 0, "ServiceControlEnum::PRESHUTDOWN muss 0 sein"); static_assert(static_cast(::NmeaManagement::ServiceControlEnum::SHUTDOWN) == 1, "ServiceControlEnum::SHUTDOWN muss 1 sein"); static_assert(static_cast(::NmeaManagement::ServiceControlEnum::STOP) == 2, "ServiceControlEnum::STOP muss 2 sein"); SUCCEED(); } /** * @test Die Enum-Werte müssen wie im migrierten NmeaHandler zugewiesen * werden können (IIXDR: ServiceControl.ServiceControlState = ...). */ TEST(nme_enums_Generated, ServiceControlEnumAssignable) { ::NmeaManagement::ServiceControlEnum state = ::NmeaManagement::ServiceControlEnum::PRESHUTDOWN; state = ::NmeaManagement::ServiceControlEnum::SHUTDOWN; state = ::NmeaManagement::ServiceControlEnum::STOP; EXPECT_EQ(state, ::NmeaManagement::ServiceControlEnum::STOP); } /** * @test Include-Guard: mehrfaches Einbinden des generierten Headers ist erlaubt. */ TEST(nme_enums_Generated, MultipleIncludeGuard) { // Including the header multiple times should not cause errors #include "NmeaManagement/nme_enums.hpp" SUCCEED(); }