Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/tests/test_nme_enums.cpp
berrux-dev 881d44f4dd Migrates residual Lts sources to generated rtiddsgen API
Adds NmeaManagement tests, fixes codegen includes and Qt6 SerialPort CMake target.
2026-09-23 12:05:37 +02:00

55 lines
2.1 KiB
C++

/**
* @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 <gtest/gtest.h>
#include <type_traits>
/**
* @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<int32_t>(::NmeaManagement::ServiceControlEnum::PRESHUTDOWN) == 0,
"ServiceControlEnum::PRESHUTDOWN muss 0 sein");
static_assert(static_cast<int32_t>(::NmeaManagement::ServiceControlEnum::SHUTDOWN) == 1,
"ServiceControlEnum::SHUTDOWN muss 1 sein");
static_assert(static_cast<int32_t>(::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();
}