diff --git a/unittests/cfdp/testDistributor.cpp b/unittests/cfdp/testDistributor.cpp index b65f6816..c5ed9948 100644 --- a/unittests/cfdp/testDistributor.cpp +++ b/unittests/cfdp/testDistributor.cpp @@ -5,10 +5,11 @@ #include "fsfw/storagemanager/LocalPool.h" #include "mocks/AcceptsTcMock.h" #include "mocks/MessageQueueMock.h" +#include "mocks/StorageManagerMock.h" TEST_CASE("CFDP Distributor", "[cfdp][distributor]") { LocalPool::LocalPoolConfig cfg = {{5, 32}, {2, 64}}; - LocalPool pool(objects::NO_OBJECT, cfg); + StorageManagerMock pool(objects::NO_OBJECT, cfg); auto queue = MessageQueueMock(1); CfdpDistribCfg distribCfg(1, pool, &queue); auto distributor = CfdpDistributor(distribCfg); @@ -42,7 +43,7 @@ TEST_CASE("CFDP Distributor", "[cfdp][distributor]") { CHECK(distributor.registerTcDestination(obswEntityId, tcAcceptor) == result::OK); size_t serLen = 0; store_address_t storeId; - CHECK(pool.getFreeElement(&storeId, creator.getSerializedSize(), &dataPtr) == result::OK); + CHECK(pool.LocalPool::getFreeElement(&storeId, creator.getSerializedSize(), &dataPtr) == result::OK); REQUIRE(creator.SerializeIF::serializeBe(dataPtr, serLen, creator.getSerializedSize()) == result::OK); TmTcMessage msg(storeId); diff --git a/unittests/mocks/StorageManagerMock.cpp b/unittests/mocks/StorageManagerMock.cpp index fc517953..13f513e6 100644 --- a/unittests/mocks/StorageManagerMock.cpp +++ b/unittests/mocks/StorageManagerMock.cpp @@ -37,10 +37,15 @@ ReturnValue_t StorageManagerMock::modifyData(store_address_t packet_id, uint8_t } return LocalPool::modifyData(packet_id, packet_ptr, size); } + ReturnValue_t StorageManagerMock::getFreeElement(store_address_t *storageId, size_t size, uint8_t **p_data, bool ignoreFault) { - return 0; + if (nextFreeElementCallFails.first) { + return nextFreeElementCallFails.second; + } + return LocalPool::getFreeElement(storageId, size, p_data, ignoreFault); } + bool StorageManagerMock::hasDataAtId(store_address_t storeId) const { return LocalPool::hasDataAtId(storeId); } @@ -74,4 +79,11 @@ void StorageManagerMock::reset() { nextGetDataCallFails.second = result::OK; nextDeleteDataCallFails.first = false; nextDeleteDataCallFails.second = result::OK; + nextFreeElementCallFails.first = false; + nextFreeElementCallFails.second = result::OK; +} + +StorageManagerMock::StorageManagerMock(object_id_t setObjectId, + const LocalPool::LocalPoolConfig &poolConfig) + : LocalPool(setObjectId, poolConfig) { } diff --git a/unittests/mocks/StorageManagerMock.h b/unittests/mocks/StorageManagerMock.h index 40bb88cc..be2b7982 100644 --- a/unittests/mocks/StorageManagerMock.h +++ b/unittests/mocks/StorageManagerMock.h @@ -6,6 +6,8 @@ class StorageManagerMock: public LocalPool { public: + StorageManagerMock(object_id_t setObjectId, const LocalPoolConfig& poolConfig); + ReturnValue_t addData(store_address_t *storageId, const uint8_t *data, size_t size, bool ignoreFault) override; ReturnValue_t deleteData(store_address_t packet_id) override; @@ -26,7 +28,7 @@ class StorageManagerMock: public LocalPool { std::pair nextModifyDataCallFails; std::pair nextGetDataCallFails; std::pair nextDeleteDataCallFails; - + std::pair nextFreeElementCallFails; void reset(); }; #endif // FSFW_TESTS_STORAGEMANAGERMOCK_H