95 lines
2.4 KiB
C++
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);
|
|
}
|