taken over unnittest folder from upstream
This commit is contained in:
parent
0b056720ba
commit
7c390c07ee
@ -1,8 +1,7 @@
|
||||
#include "CatchDefinitions.h"
|
||||
#include "CatchFactory.h"
|
||||
|
||||
#include <testcfg/cdatapool/dataPoolInit.h>
|
||||
#include <testcfg/objects/Factory.h>
|
||||
|
||||
|
||||
#ifdef GCOV
|
||||
#include <gcov.h>
|
||||
@ -11,15 +10,15 @@
|
||||
#include "../../objectmanager/ObjectManager.h"
|
||||
#include "../../objectmanager/ObjectManagerIF.h"
|
||||
#include "../../storagemanager/StorageManagerIF.h"
|
||||
#include "../../datapoolglob/GlobalDataPool.h"
|
||||
#include "../../datapool/DataPool.h"
|
||||
#include "../../serviceinterface/ServiceInterfaceStream.h"
|
||||
|
||||
|
||||
/* Global instantiations normally done in main.cpp */
|
||||
/* Initialize Data Pool */
|
||||
namespace glob {
|
||||
GlobalDataPool dataPool(datapool::dataPoolInit);
|
||||
}
|
||||
//namespace glob {
|
||||
DataPool dataPool(datapool::dataPoolInit);
|
||||
//}
|
||||
|
||||
|
||||
namespace sif {
|
||||
|
@ -2,7 +2,7 @@
|
||||
#define FRAMEWORK_TEST_UNITTESTCLASS_H_
|
||||
|
||||
#include "UnittDefinitions.h"
|
||||
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||
#include "../../returnvalues/HasReturnvaluesIF.h"
|
||||
|
||||
/**
|
||||
* @brief Can be used for internal testing, for example for hardware specific
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include <fsfw/unittest/internal/UnittDefinitions.h>
|
||||
#include "UnittDefinitions.h"
|
||||
|
||||
ReturnValue_t unitt::put_error(std::string errorId) {
|
||||
sif::error << "Unit Tester error: Failed at test ID "
|
||||
|
@ -1,7 +1,8 @@
|
||||
#include <fsfw/ipc/MessageQueueIF.h>
|
||||
#include <fsfw/ipc/QueueFactory.h>
|
||||
#include <fsfw/unittest/internal/osal/IntTestMq.h>
|
||||
#include <fsfw/unittest/internal/UnittDefinitions.h>
|
||||
#include "IntTestMq.h"
|
||||
#include "../UnittDefinitions.h"
|
||||
|
||||
#include "../../ipc/MessageQueueIF.h"
|
||||
#include "../../ipc/QueueFactory.h"
|
||||
|
||||
#include <array>
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
#include "IntTestMutex.h"
|
||||
|
||||
#include <fsfw/ipc/MutexFactory.h>
|
||||
#include <unittest/internal/UnittDefinitions.h>
|
||||
#include "../../ipc/MutexFactory.h"
|
||||
#include "../UnittDefinitions.h"
|
||||
|
||||
#if defined(hosted)
|
||||
#include <fsfw/osal/hosted/Mutex.h>
|
||||
#include "../../osal/hosted/Mutex.h"
|
||||
#include <thread>
|
||||
#include <future>
|
||||
#endif
|
||||
@ -20,7 +20,7 @@ void testmutex::testMutex() {
|
||||
// timed_mutex from the C++ library specifies undefined behaviour if
|
||||
// the timed mutex is locked twice from the same thread.
|
||||
#if defined(hosted)
|
||||
// hold on, this actually worked ? :-D This calls the function from
|
||||
// This calls the function from
|
||||
// another thread and stores the returnvalue in a future.
|
||||
auto future = std::async(&MutexIF::lockMutex, mutex, 1);
|
||||
result = future.get();
|
||||
|
@ -1,8 +1,9 @@
|
||||
#include "IntTestSemaphore.h"
|
||||
#include <fsfw/tasks/SemaphoreFactory.h>
|
||||
#include <unittest/internal/UnittDefinitions.h>
|
||||
#include <fsfw/serviceinterface/ServiceInterfaceStream.h>
|
||||
#include <fsfw/timemanager/Stopwatch.h>
|
||||
#include "../UnittDefinitions.h"
|
||||
|
||||
#include "../../tasks/SemaphoreFactory.h"
|
||||
#include "../../serviceinterface/ServiceInterfaceStream.h"
|
||||
#include "../../timemanager/Stopwatch.h"
|
||||
|
||||
|
||||
void testsemaph::testBinSemaph() {
|
||||
|
@ -1,8 +1,9 @@
|
||||
#include "IntTestSerialization.h"
|
||||
#include <fsfw/serialize/SerializeElement.h>
|
||||
#include <fsfw/serialize/SerialBufferAdapter.h>
|
||||
#include <unittest/internal/UnittDefinitions.h>
|
||||
#include <fsfw/serialize/SerializeIF.h>
|
||||
#include "../UnittDefinitions.h"
|
||||
#include "../../serialize/SerializeElement.h"
|
||||
#include "../../serialize/SerialBufferAdapter.h"
|
||||
#include "../../serialize/SerializeIF.h"
|
||||
|
||||
#include <array>
|
||||
|
||||
using retval = HasReturnvaluesIF;
|
||||
|
@ -1,6 +1,7 @@
|
||||
#ifndef UNITTEST_INTERNAL_INTTESTSERIALIZATION_H_
|
||||
#define UNITTEST_INTERNAL_INTTESTSERIALIZATION_H_
|
||||
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||
#ifndef FSFW_UNITTEST_INTERNAL_INTTESTSERIALIZATION_H_
|
||||
#define FSFW_UNITTEST_INTERNAL_INTTESTSERIALIZATION_H_
|
||||
|
||||
#include "../../returnvalues/HasReturnvaluesIF.h"
|
||||
#include <array>
|
||||
|
||||
namespace testserialize {
|
||||
@ -12,4 +13,4 @@ ReturnValue_t test_serial_buffer_adapter();
|
||||
extern std::array<uint8_t, 512> test_array;
|
||||
}
|
||||
|
||||
#endif /* UNITTEST_INTERNAL_INTTESTSERIALIZATION_H_ */
|
||||
#endif /* FSFW_UNITTEST_INTERNAL_INTTESTSERIALIZATION_H_ */
|
||||
|
60
unittest/testcfg/CatchFactory.cpp
Normal file
60
unittest/testcfg/CatchFactory.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
#include "CatchFactory.h"
|
||||
|
||||
#include <fsfw/events/EventManager.h>
|
||||
#include <fsfw/health/HealthTable.h>
|
||||
|
||||
#include <fsfw/internalError/InternalErrorReporter.h>
|
||||
#include <fsfw/objectmanager/frameworkObjects.h>
|
||||
#include <fsfw/storagemanager/PoolManager.h>
|
||||
|
||||
/**
|
||||
* @brief Produces system objects.
|
||||
* @details
|
||||
* Build tasks by using SystemObject Interface (Interface).
|
||||
* Header files of all tasks must be included
|
||||
* Please note that an object has to implement the system object interface
|
||||
* if the interface validity is checked or retrieved later by using the
|
||||
* get<TargetInterface>(object_id) function from the ObjectManagerIF.
|
||||
*
|
||||
* Framework objects are created first.
|
||||
*
|
||||
* @ingroup init
|
||||
*/
|
||||
void Factory::produce(void) {
|
||||
setStaticFrameworkObjectIds();
|
||||
new EventManager(objects::EVENT_MANAGER);
|
||||
new HealthTable(objects::HEALTH_TABLE);
|
||||
//new InternalErrorReporter(objects::INTERNAL_ERROR_REPORTER);
|
||||
|
||||
{
|
||||
static constexpr uint8_t NUMBER_OF_POOLS = 5;
|
||||
const uint16_t element_sizes[NUMBER_OF_POOLS] = {16, 32, 64, 128, 1024};
|
||||
const uint16_t n_elements[NUMBER_OF_POOLS] = {100, 50, 25, 15, 5};
|
||||
new PoolManager<NUMBER_OF_POOLS>(objects::TC_STORE, element_sizes,
|
||||
n_elements);
|
||||
}
|
||||
|
||||
{
|
||||
static constexpr uint8_t NUMBER_OF_POOLS = 5;
|
||||
const uint16_t element_sizes[NUMBER_OF_POOLS] = {16, 32, 64, 128, 1024};
|
||||
const uint16_t n_elements[NUMBER_OF_POOLS] = {100, 50, 25, 15, 5};
|
||||
new PoolManager<NUMBER_OF_POOLS>(objects::TM_STORE, element_sizes,
|
||||
n_elements);
|
||||
}
|
||||
|
||||
{
|
||||
static constexpr uint8_t NUMBER_OF_POOLS = 6;
|
||||
const uint16_t element_sizes[NUMBER_OF_POOLS] = {32, 64, 512,
|
||||
1024, 2048, 4096};
|
||||
const uint16_t n_elements[NUMBER_OF_POOLS] = {200, 100, 50, 25, 15, 5};
|
||||
new PoolManager<NUMBER_OF_POOLS>(objects::IPC_STORE, element_sizes,
|
||||
n_elements);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void Factory::setStaticFrameworkObjectIds() {
|
||||
|
||||
}
|
||||
|
||||
|
16
unittest/testcfg/CatchFactory.h
Normal file
16
unittest/testcfg/CatchFactory.h
Normal file
@ -0,0 +1,16 @@
|
||||
#ifndef FACTORY_H_
|
||||
#define FACTORY_H_
|
||||
|
||||
#include <fsfw/objectmanager/SystemObjectIF.h>
|
||||
|
||||
namespace Factory {
|
||||
/**
|
||||
* @brief Creates all SystemObject elements which are persistent
|
||||
* during execution.
|
||||
*/
|
||||
void produce();
|
||||
void setStaticFrameworkObjectIds();
|
||||
|
||||
}
|
||||
|
||||
#endif /* FACTORY_H_ */
|
@ -12,7 +12,7 @@
|
||||
#define FSFW_REDUCED_PRINTOUT 0
|
||||
|
||||
//! Can be used to enable debugging printouts for developing the FSFW
|
||||
#define FSFW_VERBOSE_PRINTOUT 0
|
||||
#define FSFW_DEBUGGING 0
|
||||
|
||||
//! Defines the FIFO depth of each commanding service base which
|
||||
//! also determines how many commands a CSB service can handle in one cycle
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef HOSTED_CONFIG_CDATAPOOL_DATAPOOLINIT_H_
|
||||
#define HOSTED_CONFIG_CDATAPOOL_DATAPOOLINIT_H_
|
||||
|
||||
#include <fsfw/datapoolglob/GlobalDataPool.h>
|
||||
#include <fsfw/datapool/DataPool.h>
|
||||
#include <fsfw/datapool/PoolEntryIF.h>
|
||||
#include <map>
|
||||
#include <cstdint>
|
||||
|
@ -3,6 +3,7 @@ CXXSRC += $(wildcard $(CURRENTPATH)/ipc/*.cpp)
|
||||
CXXSRC += $(wildcard $(CURRENTPATH)/objects/*.cpp)
|
||||
CXXSRC += $(wildcard $(CURRENTPATH)/pollingsequence/*.cpp)
|
||||
CXXSRC += $(wildcard $(CURRENTPATH)/events/*.cpp)
|
||||
CXXSRC += $(wildcard $(CURRENTPATH)/*.cpp)
|
||||
|
||||
INCLUDES += $(CURRENTPATH)
|
||||
INCLUDES += $(CURRENTPATH)/objects
|
||||
|
@ -1,106 +1,107 @@
|
||||
//#include "TestActionHelper.h"
|
||||
//#include <fsfw/action/ActionHelper.h>
|
||||
//#include <fsfw/ipc/CommandMessage.h>
|
||||
//#include <catch2/catch.hpp>
|
||||
//#include "../../core/CatchDefinitions.h"
|
||||
//
|
||||
//
|
||||
//TEST_CASE( "Action Helper" , "[ActionHelper]") {
|
||||
// ActionHelperOwnerMockBase testDhMock;
|
||||
// MessageQueueMockBase testMqMock;
|
||||
// ActionHelper actionHelper = ActionHelper(
|
||||
// &testDhMock, dynamic_cast<MessageQueueIF*>(&testMqMock));
|
||||
// CommandMessage actionMessage;
|
||||
// ActionId_t testActionId = 777;
|
||||
// std::array <uint8_t, 3> testParams {1, 2, 3};
|
||||
// store_address_t paramAddress;
|
||||
// StorageManagerIF *ipcStore = tglob::getIpcStoreHandle();
|
||||
// ipcStore->addData(¶mAddress, testParams.data(), 3);
|
||||
// REQUIRE(actionHelper.initialize() == retval::CATCH_OK);
|
||||
//
|
||||
// SECTION ("Simple tests") {
|
||||
// ActionMessage::setCommand(&actionMessage, testActionId, paramAddress);
|
||||
// CHECK(not testDhMock.executeActionCalled);
|
||||
// REQUIRE(actionHelper.handleActionMessage(&actionMessage) == retval::CATCH_OK);
|
||||
// CHECK(testDhMock.executeActionCalled);
|
||||
// // No message is sent if everything is alright.
|
||||
// CHECK(not testMqMock.wasMessageSent());
|
||||
// store_address_t invalidAddress;
|
||||
// ActionMessage::setCommand(&actionMessage, testActionId, invalidAddress);
|
||||
// actionHelper.handleActionMessage(&actionMessage);
|
||||
// CHECK(testMqMock.wasMessageSent());
|
||||
// const uint8_t* ptr = nullptr;
|
||||
// size_t size = 0;
|
||||
// REQUIRE(ipcStore->getData(paramAddress, &ptr, &size) == static_cast<uint32_t>(StorageManagerIF::DATA_DOES_NOT_EXIST));
|
||||
// REQUIRE(ptr == nullptr);
|
||||
// REQUIRE(size == 0);
|
||||
// testDhMock.getBuffer(&ptr, &size);
|
||||
// REQUIRE(size == 3);
|
||||
// for(uint8_t i = 0; i<3;i++){
|
||||
// REQUIRE(ptr[i] == (i+1));
|
||||
// }
|
||||
// testDhMock.clearBuffer();
|
||||
// }
|
||||
//
|
||||
// SECTION("Handle failures"){
|
||||
// actionMessage.setCommand(1234);
|
||||
// REQUIRE(actionHelper.handleActionMessage(&actionMessage) == static_cast<uint32_t>(CommandMessage::UNKNOWN_COMMAND));
|
||||
// CHECK(not testMqMock.wasMessageSent());
|
||||
// uint16_t step = 5;
|
||||
// ReturnValue_t status = 0x1234;
|
||||
// actionHelper.step(step, testMqMock.getId(), testActionId, status);
|
||||
// step += 1;
|
||||
// CHECK(testMqMock.wasMessageSent());
|
||||
// CommandMessage testMessage;
|
||||
// REQUIRE(testMqMock.receiveMessage(&testMessage) == static_cast<uint32_t>(HasReturnvaluesIF::RETURN_OK));
|
||||
// REQUIRE(testMessage.getCommand() == static_cast<uint32_t>(ActionMessage::STEP_FAILED));
|
||||
// REQUIRE(testMessage.getParameter() == static_cast<uint32_t>(testActionId));
|
||||
// uint32_t parameter2 = ((uint32_t)step << 16) | (uint32_t)status;
|
||||
// REQUIRE(testMessage.getParameter2() == parameter2);
|
||||
// REQUIRE(ActionMessage::getStep(&testMessage) == step);
|
||||
// }
|
||||
//
|
||||
// SECTION("Handle finish"){
|
||||
// CHECK(not testMqMock.wasMessageSent());
|
||||
// ReturnValue_t status = 0x9876;
|
||||
// actionHelper.finish(testMqMock.getId(), testActionId, status);
|
||||
// CHECK(testMqMock.wasMessageSent());
|
||||
// CommandMessage testMessage;
|
||||
// REQUIRE(testMqMock.receiveMessage(&testMessage) == static_cast<uint32_t>(HasReturnvaluesIF::RETURN_OK));
|
||||
// REQUIRE(testMessage.getCommand() == static_cast<uint32_t>(ActionMessage::COMPLETION_FAILED));
|
||||
// REQUIRE(ActionMessage::getActionId(&testMessage) == testActionId);
|
||||
// REQUIRE(ActionMessage::getReturnCode(&testMessage) == static_cast<uint32_t>(status));
|
||||
// }
|
||||
//
|
||||
// SECTION("Handle failed"){
|
||||
// store_address_t toLongParamAddress = StorageManagerIF::INVALID_ADDRESS;
|
||||
// std::array<uint8_t, 5> toLongData = {5, 4, 3, 2, 1};
|
||||
// REQUIRE(ipcStore->addData(&toLongParamAddress, toLongData.data(), 5) == retval::CATCH_OK);
|
||||
// ActionMessage::setCommand(&actionMessage, testActionId, toLongParamAddress);
|
||||
// CHECK(not testDhMock.executeActionCalled);
|
||||
// REQUIRE(actionHelper.handleActionMessage(&actionMessage) == retval::CATCH_OK);
|
||||
// REQUIRE(ipcStore->getData(toLongParamAddress).first == static_cast<uint32_t>(StorageManagerIF::DATA_DOES_NOT_EXIST));
|
||||
// CommandMessage testMessage;
|
||||
// REQUIRE(testMqMock.receiveMessage(&testMessage) == static_cast<uint32_t>(HasReturnvaluesIF::RETURN_OK));
|
||||
// REQUIRE(testMessage.getCommand() == static_cast<uint32_t>(ActionMessage::STEP_FAILED));
|
||||
// REQUIRE(ActionMessage::getReturnCode(&testMessage) == 0xAFFE);
|
||||
// REQUIRE(ActionMessage::getStep(&testMessage) == 0);
|
||||
// REQUIRE(ActionMessage::getActionId(&testMessage) == testActionId);
|
||||
// }
|
||||
//
|
||||
// SECTION("Missing IPC Data"){
|
||||
// ActionMessage::setCommand(&actionMessage, testActionId, StorageManagerIF::INVALID_ADDRESS);
|
||||
// CHECK(not testDhMock.executeActionCalled);
|
||||
// REQUIRE(actionHelper.handleActionMessage(&actionMessage) == retval::CATCH_OK);
|
||||
// CommandMessage testMessage;
|
||||
// REQUIRE(testMqMock.receiveMessage(&testMessage) == static_cast<uint32_t>(HasReturnvaluesIF::RETURN_OK));
|
||||
// REQUIRE(testMessage.getCommand() == static_cast<uint32_t>(ActionMessage::STEP_FAILED));
|
||||
// REQUIRE(ActionMessage::getReturnCode(&testMessage) == static_cast<uint32_t>(StorageManagerIF::ILLEGAL_STORAGE_ID));
|
||||
// REQUIRE(ActionMessage::getStep(&testMessage) == 0);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// SECTION("Data Reply"){
|
||||
//
|
||||
// }
|
||||
//}
|
||||
#include "TestActionHelper.h"
|
||||
#include <fsfw/action/ActionHelper.h>
|
||||
#include <fsfw/ipc/CommandMessage.h>
|
||||
#include <catch2/catch.hpp>
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
|
||||
|
||||
TEST_CASE( "Action Helper" , "[ActionHelper]") {
|
||||
ActionHelperOwnerMockBase testDhMock;
|
||||
MessageQueueMockBase testMqMock;
|
||||
ActionHelper actionHelper = ActionHelper(
|
||||
&testDhMock, dynamic_cast<MessageQueueIF*>(&testMqMock));
|
||||
CommandMessage actionMessage;
|
||||
ActionId_t testActionId = 777;
|
||||
std::array <uint8_t, 3> testParams {1, 2, 3};
|
||||
store_address_t paramAddress;
|
||||
StorageManagerIF *ipcStore = tglob::getIpcStoreHandle();
|
||||
REQUIRE(ipcStore != nullptr);
|
||||
ipcStore->addData(¶mAddress, testParams.data(), 3);
|
||||
REQUIRE(actionHelper.initialize() == retval::CATCH_OK);
|
||||
|
||||
SECTION ("Simple tests") {
|
||||
ActionMessage::setCommand(&actionMessage, testActionId, paramAddress);
|
||||
CHECK(not testDhMock.executeActionCalled);
|
||||
REQUIRE(actionHelper.handleActionMessage(&actionMessage) == retval::CATCH_OK);
|
||||
CHECK(testDhMock.executeActionCalled);
|
||||
// No message is sent if everything is alright.
|
||||
CHECK(not testMqMock.wasMessageSent());
|
||||
store_address_t invalidAddress;
|
||||
ActionMessage::setCommand(&actionMessage, testActionId, invalidAddress);
|
||||
actionHelper.handleActionMessage(&actionMessage);
|
||||
CHECK(testMqMock.wasMessageSent());
|
||||
const uint8_t* ptr = nullptr;
|
||||
size_t size = 0;
|
||||
REQUIRE(ipcStore->getData(paramAddress, &ptr, &size) == static_cast<uint32_t>(StorageManagerIF::DATA_DOES_NOT_EXIST));
|
||||
REQUIRE(ptr == nullptr);
|
||||
REQUIRE(size == 0);
|
||||
testDhMock.getBuffer(&ptr, &size);
|
||||
REQUIRE(size == 3);
|
||||
for(uint8_t i = 0; i<3;i++){
|
||||
REQUIRE(ptr[i] == (i+1));
|
||||
}
|
||||
testDhMock.clearBuffer();
|
||||
}
|
||||
|
||||
SECTION("Handle failures"){
|
||||
actionMessage.setCommand(1234);
|
||||
REQUIRE(actionHelper.handleActionMessage(&actionMessage) == static_cast<uint32_t>(CommandMessage::UNKNOWN_COMMAND));
|
||||
CHECK(not testMqMock.wasMessageSent());
|
||||
uint16_t step = 5;
|
||||
ReturnValue_t status = 0x1234;
|
||||
actionHelper.step(step, testMqMock.getId(), testActionId, status);
|
||||
step += 1;
|
||||
CHECK(testMqMock.wasMessageSent());
|
||||
CommandMessage testMessage;
|
||||
REQUIRE(testMqMock.receiveMessage(&testMessage) == static_cast<uint32_t>(HasReturnvaluesIF::RETURN_OK));
|
||||
REQUIRE(testMessage.getCommand() == static_cast<uint32_t>(ActionMessage::STEP_FAILED));
|
||||
REQUIRE(testMessage.getParameter() == static_cast<uint32_t>(testActionId));
|
||||
uint32_t parameter2 = ((uint32_t)step << 16) | (uint32_t)status;
|
||||
REQUIRE(testMessage.getParameter2() == parameter2);
|
||||
REQUIRE(ActionMessage::getStep(&testMessage) == step);
|
||||
}
|
||||
|
||||
SECTION("Handle finish"){
|
||||
CHECK(not testMqMock.wasMessageSent());
|
||||
ReturnValue_t status = 0x9876;
|
||||
actionHelper.finish(testMqMock.getId(), testActionId, status);
|
||||
CHECK(testMqMock.wasMessageSent());
|
||||
CommandMessage testMessage;
|
||||
REQUIRE(testMqMock.receiveMessage(&testMessage) == static_cast<uint32_t>(HasReturnvaluesIF::RETURN_OK));
|
||||
REQUIRE(testMessage.getCommand() == static_cast<uint32_t>(ActionMessage::COMPLETION_FAILED));
|
||||
REQUIRE(ActionMessage::getActionId(&testMessage) == testActionId);
|
||||
REQUIRE(ActionMessage::getReturnCode(&testMessage) == static_cast<uint32_t>(status));
|
||||
}
|
||||
|
||||
SECTION("Handle failed"){
|
||||
store_address_t toLongParamAddress = StorageManagerIF::INVALID_ADDRESS;
|
||||
std::array<uint8_t, 5> toLongData = {5, 4, 3, 2, 1};
|
||||
REQUIRE(ipcStore->addData(&toLongParamAddress, toLongData.data(), 5) == retval::CATCH_OK);
|
||||
ActionMessage::setCommand(&actionMessage, testActionId, toLongParamAddress);
|
||||
CHECK(not testDhMock.executeActionCalled);
|
||||
REQUIRE(actionHelper.handleActionMessage(&actionMessage) == retval::CATCH_OK);
|
||||
REQUIRE(ipcStore->getData(toLongParamAddress).first == static_cast<uint32_t>(StorageManagerIF::DATA_DOES_NOT_EXIST));
|
||||
CommandMessage testMessage;
|
||||
REQUIRE(testMqMock.receiveMessage(&testMessage) == static_cast<uint32_t>(HasReturnvaluesIF::RETURN_OK));
|
||||
REQUIRE(testMessage.getCommand() == static_cast<uint32_t>(ActionMessage::STEP_FAILED));
|
||||
REQUIRE(ActionMessage::getReturnCode(&testMessage) == 0xAFFE);
|
||||
REQUIRE(ActionMessage::getStep(&testMessage) == 0);
|
||||
REQUIRE(ActionMessage::getActionId(&testMessage) == testActionId);
|
||||
}
|
||||
|
||||
SECTION("Missing IPC Data"){
|
||||
ActionMessage::setCommand(&actionMessage, testActionId, StorageManagerIF::INVALID_ADDRESS);
|
||||
CHECK(not testDhMock.executeActionCalled);
|
||||
REQUIRE(actionHelper.handleActionMessage(&actionMessage) == retval::CATCH_OK);
|
||||
CommandMessage testMessage;
|
||||
REQUIRE(testMqMock.receiveMessage(&testMessage) == static_cast<uint32_t>(HasReturnvaluesIF::RETURN_OK));
|
||||
REQUIRE(testMessage.getCommand() == static_cast<uint32_t>(ActionMessage::STEP_FAILED));
|
||||
REQUIRE(ActionMessage::getReturnCode(&testMessage) == static_cast<uint32_t>(StorageManagerIF::ILLEGAL_STORAGE_ID));
|
||||
REQUIRE(ActionMessage::getStep(&testMessage) == 0);
|
||||
}
|
||||
|
||||
|
||||
SECTION("Data Reply"){
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,131 +1,132 @@
|
||||
//#ifndef UNITTEST_HOSTED_TESTACTIONHELPER_H_
|
||||
//#define UNITTEST_HOSTED_TESTACTIONHELPER_H_
|
||||
//
|
||||
//#include <fsfw/action/HasActionsIF.h>
|
||||
//#include <fsfw/ipc/MessageQueueIF.h>
|
||||
//#include <fsfw/unittest/core/CatchDefinitions.h>
|
||||
//#include <cstring>
|
||||
//
|
||||
//
|
||||
//class ActionHelperOwnerMockBase: public HasActionsIF {
|
||||
//public:
|
||||
// bool getCommandQueueCalled = false;
|
||||
// bool executeActionCalled = false;
|
||||
// static const size_t MAX_SIZE = 3;
|
||||
// uint8_t buffer[MAX_SIZE] = {0, 0, 0};
|
||||
// size_t size = 0;
|
||||
//
|
||||
// MessageQueueId_t getCommandQueue() const override {
|
||||
// return tconst::testQueueId;
|
||||
// }
|
||||
//
|
||||
// ReturnValue_t executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
||||
// const uint8_t* data, size_t size) override {
|
||||
// executeActionCalled = true;
|
||||
// if(size > MAX_SIZE){
|
||||
// return 0xAFFE;
|
||||
// }
|
||||
// this->size = size;
|
||||
// memcpy(buffer, data, size);
|
||||
// return HasReturnvaluesIF::RETURN_OK;
|
||||
// }
|
||||
//
|
||||
// void clearBuffer(){
|
||||
// this->size = 0;
|
||||
// for(size_t i = 0; i<MAX_SIZE; i++){
|
||||
// buffer[i] = 0;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// void getBuffer(const uint8_t** ptr, size_t* size){
|
||||
// if(size != nullptr){
|
||||
// *size = this->size;
|
||||
// }
|
||||
// if(ptr != nullptr){
|
||||
// *ptr = buffer;
|
||||
// }
|
||||
// }
|
||||
//};
|
||||
//
|
||||
//
|
||||
//class MessageQueueMockBase: public MessageQueueIF {
|
||||
//public:
|
||||
// MessageQueueId_t myQueueId = 0;
|
||||
// bool defaultDestSet = false;
|
||||
// bool messageSent = false;
|
||||
//
|
||||
//
|
||||
//
|
||||
// bool wasMessageSent() {
|
||||
// bool tempMessageSent = messageSent;
|
||||
// messageSent = false;
|
||||
// return tempMessageSent;
|
||||
// }
|
||||
//
|
||||
// virtual ReturnValue_t reply( MessageQueueMessage* message ) {
|
||||
// messageSent = true;
|
||||
// lastMessage = (*message);
|
||||
// return HasReturnvaluesIF::RETURN_OK;
|
||||
// };
|
||||
// virtual ReturnValue_t receiveMessage(MessageQueueMessage* message,
|
||||
// MessageQueueId_t *receivedFrom) {
|
||||
// (*message) = lastMessage;
|
||||
// lastMessage.clear();
|
||||
// return HasReturnvaluesIF::RETURN_OK;
|
||||
// }
|
||||
// virtual ReturnValue_t receiveMessage(MessageQueueMessage* message) {
|
||||
// (*message) = lastMessage;
|
||||
// lastMessage.clear();
|
||||
// return HasReturnvaluesIF::RETURN_OK;
|
||||
// }
|
||||
// virtual ReturnValue_t flush(uint32_t* count) {
|
||||
// return HasReturnvaluesIF::RETURN_OK;
|
||||
// }
|
||||
// virtual MessageQueueId_t getLastPartner() const {
|
||||
// return tconst::testQueueId;
|
||||
// }
|
||||
// virtual MessageQueueId_t getId() const {
|
||||
// return tconst::testQueueId;
|
||||
// }
|
||||
// virtual ReturnValue_t sendMessageFrom( MessageQueueId_t sendTo,
|
||||
// MessageQueueMessage* message, MessageQueueId_t sentFrom,
|
||||
// bool ignoreFault = false ) {
|
||||
// messageSent = true;
|
||||
// lastMessage = (*message);
|
||||
// return HasReturnvaluesIF::RETURN_OK;
|
||||
// }
|
||||
// virtual ReturnValue_t sendMessage( MessageQueueId_t sendTo,
|
||||
// MessageQueueMessage* message, bool ignoreFault = false ) override {
|
||||
// messageSent = true;
|
||||
// lastMessage = (*message);
|
||||
// return HasReturnvaluesIF::RETURN_OK;
|
||||
// }
|
||||
// virtual ReturnValue_t sendToDefaultFrom( MessageQueueMessage* message,
|
||||
// MessageQueueId_t sentFrom, bool ignoreFault = false ) {
|
||||
// messageSent = true;
|
||||
// lastMessage = (*message);
|
||||
// return HasReturnvaluesIF::RETURN_OK;
|
||||
// }
|
||||
// virtual ReturnValue_t sendToDefault( MessageQueueMessage* message ) {
|
||||
// messageSent = true;
|
||||
// lastMessage = (*message);
|
||||
// return HasReturnvaluesIF::RETURN_OK;
|
||||
// }
|
||||
// virtual void setDefaultDestination(MessageQueueId_t defaultDestination) {
|
||||
// myQueueId = defaultDestination;
|
||||
// defaultDestSet = true;
|
||||
// }
|
||||
//
|
||||
// virtual MessageQueueId_t getDefaultDestination() const {
|
||||
// return myQueueId;
|
||||
// }
|
||||
// virtual bool isDefaultDestinationSet() const {
|
||||
// return defaultDestSet;
|
||||
// }
|
||||
//private:
|
||||
// MessageQueueMessage lastMessage;
|
||||
//
|
||||
//};
|
||||
//
|
||||
//
|
||||
//#endif /* UNITTEST_TESTFW_NEWTESTS_TESTACTIONHELPER_H_ */
|
||||
#ifndef UNITTEST_HOSTED_TESTACTIONHELPER_H_
|
||||
#define UNITTEST_HOSTED_TESTACTIONHELPER_H_
|
||||
|
||||
#include <fsfw/action/HasActionsIF.h>
|
||||
#include <fsfw/ipc/MessageQueueIF.h>
|
||||
#include <fsfw/unittest/core/CatchDefinitions.h>
|
||||
#include <cstring>
|
||||
|
||||
|
||||
class ActionHelperOwnerMockBase: public HasActionsIF {
|
||||
public:
|
||||
bool getCommandQueueCalled = false;
|
||||
bool executeActionCalled = false;
|
||||
static const size_t MAX_SIZE = 3;
|
||||
uint8_t buffer[MAX_SIZE] = {0, 0, 0};
|
||||
size_t size = 0;
|
||||
|
||||
MessageQueueId_t getCommandQueue() const override {
|
||||
return tconst::testQueueId;
|
||||
}
|
||||
|
||||
ReturnValue_t executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
||||
const uint8_t* data, size_t size) override {
|
||||
executeActionCalled = true;
|
||||
if(size > MAX_SIZE){
|
||||
return 0xAFFE;
|
||||
}
|
||||
this->size = size;
|
||||
memcpy(buffer, data, size);
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
void clearBuffer(){
|
||||
this->size = 0;
|
||||
for(size_t i = 0; i<MAX_SIZE; i++){
|
||||
buffer[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void getBuffer(const uint8_t** ptr, size_t* size){
|
||||
if(size != nullptr){
|
||||
*size = this->size;
|
||||
}
|
||||
if(ptr != nullptr){
|
||||
*ptr = buffer;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class MessageQueueMockBase: public MessageQueueIF {
|
||||
public:
|
||||
MessageQueueId_t myQueueId = 0;
|
||||
bool defaultDestSet = false;
|
||||
bool messageSent = false;
|
||||
|
||||
|
||||
|
||||
bool wasMessageSent() {
|
||||
bool tempMessageSent = messageSent;
|
||||
messageSent = false;
|
||||
return tempMessageSent;
|
||||
}
|
||||
|
||||
virtual ReturnValue_t reply( MessageQueueMessageIF* message ) {
|
||||
messageSent = true;
|
||||
lastMessage = *(dynamic_cast<MessageQueueMessage*>(message));
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
};
|
||||
virtual ReturnValue_t receiveMessage(MessageQueueMessageIF* message,
|
||||
MessageQueueId_t *receivedFrom) {
|
||||
(*message) = lastMessage;
|
||||
lastMessage.clear();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
virtual ReturnValue_t receiveMessage(MessageQueueMessageIF* message) {
|
||||
memcpy(message->getBuffer(), lastMessage.getBuffer(),
|
||||
message->getMessageSize());
|
||||
lastMessage.clear();
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
virtual ReturnValue_t flush(uint32_t* count) {
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
virtual MessageQueueId_t getLastPartner() const {
|
||||
return tconst::testQueueId;
|
||||
}
|
||||
virtual MessageQueueId_t getId() const {
|
||||
return tconst::testQueueId;
|
||||
}
|
||||
virtual ReturnValue_t sendMessageFrom( MessageQueueId_t sendTo,
|
||||
MessageQueueMessageIF* message, MessageQueueId_t sentFrom,
|
||||
bool ignoreFault = false ) {
|
||||
messageSent = true;
|
||||
lastMessage = *(dynamic_cast<MessageQueueMessage*>(message));
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
virtual ReturnValue_t sendMessage( MessageQueueId_t sendTo,
|
||||
MessageQueueMessageIF* message, bool ignoreFault = false ) override {
|
||||
messageSent = true;
|
||||
lastMessage = *(dynamic_cast<MessageQueueMessage*>(message));
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
virtual ReturnValue_t sendToDefaultFrom( MessageQueueMessageIF* message,
|
||||
MessageQueueId_t sentFrom, bool ignoreFault = false ) {
|
||||
messageSent = true;
|
||||
lastMessage = *(dynamic_cast<MessageQueueMessage*>(message));
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
virtual ReturnValue_t sendToDefault( MessageQueueMessageIF* message ) {
|
||||
messageSent = true;
|
||||
lastMessage = *(dynamic_cast<MessageQueueMessage*>(message));
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
virtual void setDefaultDestination(MessageQueueId_t defaultDestination) {
|
||||
myQueueId = defaultDestination;
|
||||
defaultDestSet = true;
|
||||
}
|
||||
|
||||
virtual MessageQueueId_t getDefaultDestination() const {
|
||||
return myQueueId;
|
||||
}
|
||||
virtual bool isDefaultDestinationSet() const {
|
||||
return defaultDestSet;
|
||||
}
|
||||
private:
|
||||
MessageQueueMessage lastMessage;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif /* UNITTEST_TESTFW_NEWTESTS_TESTACTIONHELPER_H_ */
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include <fsfw/container/SimpleRingBuffer.h>
|
||||
#include <catch2/catch.hpp>
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
#include "../../container/SimpleRingBuffer.h"
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
#include <cstring>
|
||||
|
||||
TEST_CASE("Ring Buffer Test" , "[RingBufferTest]") {
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include <fsfw/container/ArrayList.h>
|
||||
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||
#include "../../container/ArrayList.h"
|
||||
#include "../../returnvalues/HasReturnvaluesIF.h"
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
#include <fsfw/container/DynamicFIFO.h>
|
||||
#include <fsfw/container/FIFO.h>
|
||||
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||
#include "../../container/DynamicFIFO.h"
|
||||
#include "../../container/FIFO.h"
|
||||
#include "../../returnvalues/HasReturnvaluesIF.h"
|
||||
|
||||
#include <catch.hpp>
|
||||
#include <CatchDefinitions.h>
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
#include <fsfw/container/DynamicFIFO.h>
|
||||
#include <fsfw/container/FIFO.h>
|
||||
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||
#include "../../container/DynamicFIFO.h"
|
||||
#include "../../container/FIFO.h"
|
||||
#include "../../returnvalues/HasReturnvaluesIF.h"
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
|
@ -1,7 +1,7 @@
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
|
||||
#include <fsfw/container/FixedArrayList.h>
|
||||
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||
#include "../../container/FixedArrayList.h"
|
||||
#include "../../returnvalues/HasReturnvaluesIF.h"
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include <fsfw/container/FixedMap.h>
|
||||
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||
#include "../../container/FixedMap.h"
|
||||
#include "../../returnvalues/HasReturnvaluesIF.h"
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include <fsfw/container/FixedOrderedMultimap.h>
|
||||
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||
#include "../../container/FixedOrderedMultimap.h"
|
||||
#include "../../returnvalues/HasReturnvaluesIF.h"
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
|
@ -1,8 +1,8 @@
|
||||
#include <fsfw/ipc/MessageQueueIF.h>
|
||||
#include <fsfw/ipc/QueueFactory.h>
|
||||
#include "catch.hpp"
|
||||
#include "../../ipc/MessageQueueIF.h"
|
||||
#include "../../ipc/QueueFactory.h"
|
||||
#include <catch.hpp>
|
||||
#include <array>
|
||||
#include "core/CatchDefinitions.h"
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
|
||||
TEST_CASE("MessageQueue Basic Test","[TestMq]") {
|
||||
MessageQueueIF* testSenderMq =
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include <fsfw/serialize/SerialBufferAdapter.h>
|
||||
#include "../../serialize/SerialBufferAdapter.h"
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
|
@ -1,8 +1,9 @@
|
||||
#include <fsfw/globalfunctions/arrayprinter.h>
|
||||
#include "TestSerialLinkedPacket.h"
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
|
||||
#include "../../globalfunctions/arrayprinter.h"
|
||||
|
||||
#include <catch2/catch.hpp>
|
||||
#include "../../core/CatchDefinitions.h"
|
||||
#include "TestSerialLinkedPacket.h"
|
||||
|
||||
|
||||
TEST_CASE("Serial Linked Packet" , "[SerLinkPacket]") {
|
||||
|
@ -1,4 +1,4 @@
|
||||
#include <fsfw/serialize/SerializeAdapter.h>
|
||||
#include "../../serialize/SerializeAdapter.h"
|
||||
|
||||
#include "catch.hpp"
|
||||
#include <array>
|
||||
|
Loading…
Reference in New Issue
Block a user