diff --git a/src/fsfw/storagemanager/StorageAccessor.cpp b/src/fsfw/storagemanager/StorageAccessor.cpp index e2b083b2..b8096c1e 100644 --- a/src/fsfw/storagemanager/StorageAccessor.cpp +++ b/src/fsfw/storagemanager/StorageAccessor.cpp @@ -13,7 +13,7 @@ StorageAccessor::StorageAccessor(store_address_t storeId, StorageManagerIF* stor StorageAccessor& StorageAccessor::operator=(StorageAccessor&& other) { // Call the parent move assignment and also assign own member. dataPointer = other.dataPointer; - StorageAccessor::operator=(std::move(other)); + ConstStorageAccessor::operator=(std::move(other)); return *this; } diff --git a/tests/src/fsfw_tests/unit/storagemanager/TestNewAccessor.cpp b/tests/src/fsfw_tests/unit/storagemanager/TestNewAccessor.cpp index e1db9ce0..9631de38 100644 --- a/tests/src/fsfw_tests/unit/storagemanager/TestNewAccessor.cpp +++ b/tests/src/fsfw_tests/unit/storagemanager/TestNewAccessor.cpp @@ -156,4 +156,31 @@ TEST_CASE("New Accessor", "[NewAccessor]") { CHECK(receptionArray[i] == 42); } } + + SECTION("Operators"){ + result = SimplePool.addData(&testStoreId, testDataArray.data(), size); + REQUIRE(result == retval::CATCH_OK); + { + StorageAccessor accessor(testStoreId); + StorageAccessor accessor2(0); + accessor2 = std::move(accessor); + REQUIRE(accessor.data() == nullptr); + std::array data; + size_t size = 6; + result = accessor.write(data.data(), data.size()); + REQUIRE(result == HasReturnvaluesIF::RETURN_FAILED); + result = SimplePool.modifyData(testStoreId, accessor2); + REQUIRE(result == HasReturnvaluesIF::RETURN_OK); + CHECK(accessor2.getId() == testStoreId); + CHECK(accessor2.size() == 10); + + std::array newData; + // Expect data to be invalid so this must return RETURN_FAILED + result = accessor.getDataCopy(newData.data(),newData.size()); + REQUIRE(result == HasReturnvaluesIF::RETURN_FAILED); + // Expect data to be too small + result = accessor2.getDataCopy(data.data(),data.size()); + REQUIRE(result == HasReturnvaluesIF::RETURN_FAILED); + } + } } diff --git a/tests/src/fsfw_tests/unit/storagemanager/TestPool.cpp b/tests/src/fsfw_tests/unit/storagemanager/TestPool.cpp index 2cbf951d..ce1f8518 100644 --- a/tests/src/fsfw_tests/unit/storagemanager/TestPool.cpp +++ b/tests/src/fsfw_tests/unit/storagemanager/TestPool.cpp @@ -3,6 +3,7 @@ #include #include +#include #include "fsfw_tests/unit/CatchDefinitions.h"