#include #include "fsfw/cfdp/VarLenFields.h" #include "fsfw/cfdp/handler/ReservedMessageParser.h" #include "fsfw/cfdp/tlv/Lv.h" #include "fsfw/cfdp/tlv/ReservedMessageCreator.h" #include "fsfw/cfdp/tlv/StringLv.h" #include "mocks/MessageQueueMock.h" #include "mocks/StorageManagerMock.h" TEST_CASE("Reserved Message Parser", "[cfdp]") { using namespace cfdp; using namespace returnvalue; std::string srcFileName = "hello.txt"; std::string destFileName = "hello2.txt"; MessageQueueId_t destQueueId = 2; MessageQueueMock msgQueue(destQueueId); LocalPool::LocalPoolConfig storeCfg = {{10, 32}, {10, 64}, {10, 128}, {10, 1024}}; StorageManagerMock ipcStore(0, storeCfg); std::array buffer{}; uint8_t msgBuf[32]{}; EntityId entityId(cfdp::WidthInBytes::ONE_BYTE, 5); uint8_t* msgBufPtr = msgBuf; size_t serLen = 0; cfdp::StringLv srcName(srcFileName); cfdp::StringLv destName(destFileName); CHECK(entityId.serializeAsLv(&msgBufPtr, &serLen, sizeof(msgBuf)) == OK); CHECK(srcName.serialize(&msgBufPtr, &serLen, sizeof(msgBuf), SerializeIF::Endianness::NETWORK) == OK); CHECK(destName.serialize(&msgBufPtr, &serLen, sizeof(msgBuf), SerializeIF::Endianness::NETWORK) == OK); ReservedMessageCreator creator(static_cast(ProxyOpMessageType::PUT_REQUEST), msgBuf, serLen); serLen = 0; ReturnValue_t result = creator.serializeBe(buffer.data(), serLen, buffer.size()); CHECK(result == returnvalue::OK); ReservedMessageParser parser(ipcStore, msgQueue, destQueueId); CHECK(parser.parse(buffer.data(), buffer.max_size()) == OK); }