Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/TetraIF/PrtCnv/unittest/PrtCnvMemberTest.cpp
T
2026-09-12 13:54:34 +02:00

95 lines
2.4 KiB
C++

/**
* @file PrtCnvMemberTest.cpp
* @brief Unit tests for PrtCnv::PrtCnvMember.
*
* Covers the public state carried per member and the fragmented-telegram
* bookkeeping (collecting fragments, reporting the telegram id, clearing).
*/
#include <gtest/gtest.h>
#include <QtCore/QByteArray>
#include "PrtCnvMember.hpp"
#include <CoPrtCnv/CoPrtCnvRadioTelegram.hpp>
#include <CoPrtCnv/tetra_telegram_ids.h>
using PrtCnv::PrtCnvMember;
using N_CoPrtCnv::CoPrtCnvRadioTelegram;
TEST(PrtCnvMemberTest, ConstructorStoresIdAndIssi)
{
const PrtCnvMember member(17, 4711);
EXPECT_EQ(member.m_Id, 17);
EXPECT_EQ(member.m_ISSI, 4711);
EXPECT_EQ(member.m_ClaimCount, 0);
EXPECT_EQ(member.m_loggedInExerciseId, 0);
EXPECT_FALSE(member.m_Licensed);
}
TEST(PrtCnvMemberTest, PublicStateIsWritable)
{
PrtCnvMember member(1, 2);
member.m_ClaimCount = 3;
member.m_loggedInExerciseId = 42;
member.m_Licensed = true;
EXPECT_EQ(member.m_ClaimCount, 3);
EXPECT_EQ(member.m_loggedInExerciseId, 42);
EXPECT_TRUE(member.m_Licensed);
}
TEST(PrtCnvMemberTest, FragmentedListStartsEmpty)
{
const PrtCnvMember member(1, 2);
EXPECT_TRUE(member.isFragmentedListEmpty());
EXPECT_TRUE(member.getUnfragmentedTelegramData().isEmpty());
}
TEST(PrtCnvMemberTest, AddingAFragmentFillsTheList)
{
PrtCnvMember member(1, 2);
const CoPrtCnvRadioTelegram fragment(GEF_GEFECHTSFELDTELEGRAMM, 8, 0);
member.addFragmentedTelegram(fragment);
EXPECT_FALSE(member.isFragmentedListEmpty());
}
TEST(PrtCnvMemberTest, ClearFragmentedListEmptiesTheList)
{
PrtCnvMember member(1, 2);
const CoPrtCnvRadioTelegram fragment(GEF_GEFECHTSFELDTELEGRAMM, 8, 0);
member.addFragmentedTelegram(fragment);
ASSERT_FALSE(member.isFragmentedListEmpty());
member.clearFragmentedList();
EXPECT_TRUE(member.isFragmentedListEmpty());
}
TEST(PrtCnvMemberTest, ClearFragmentedListIsIdempotent)
{
PrtCnvMember member(1, 2);
member.clearFragmentedList();
member.clearFragmentedList();
EXPECT_TRUE(member.isFragmentedListEmpty());
}
TEST(PrtCnvMemberTest, TelegramIdFallsBackWhenNoFirstFragmentIsPresent)
{
PrtCnvMember member(1, 2);
// A telegram built from the plain telegram-id constructor is not fragmented,
// so no entry qualifies as the first fragment of a fragmented telegram.
const CoPrtCnvRadioTelegram fragment(GEF_GEFECHTSFELDTELEGRAMM, 8, 0);
member.addFragmentedTelegram(fragment);
EXPECT_EQ(member.getFragmentedTelegramId(), GEF_BESTAETIGUNG);
}