eive-obsw/unittest/controller/testThermalController.cpp

69 lines
2.2 KiB
C++
Raw Normal View History

#include <fsfw/events/EventManagerIF.h>
#include <fsfw/health/HealthTable.h>
#include <fsfw/housekeeping/AcceptsHkPacketsIF.h>
#include <fsfw/internalerror/InternalErrorReporter.h>
#include <fsfw/ipc/QueueFactory.h>
#include <fsfw/objectmanager.h>
#include <fsfw/storagemanager/PoolManager.h>
#include <fsfw/timemanager/TimeStamper.h>
#include <mission/controller/ThermalController.h>
#include <catch2/catch_test_macros.hpp>
class HkDummy : public SystemObject, public AcceptsHkPacketsIF {
public:
HkDummy() : SystemObject(objects::PUS_SERVICE_3_HOUSEKEEPING) {}
virtual MessageQueueId_t getHkQueue() const { return MessageQueueIF::NO_QUEUE; }
};
void factory(void* args) {
new HkDummy();
new HealthTable(objects::HEALTH_TABLE);
new InternalErrorReporter(objects::INTERNAL_ERROR_REPORTER);
new TimeStamper(objects::TIME_STAMPER);
{
PoolManager::LocalPoolConfig poolCfg = {{300, 16}, {200, 32}, {150, 64}, {150, 128},
{100, 256}, {50, 512}, {50, 1024}, {10, 2048}};
new PoolManager(objects::IPC_STORE, poolCfg);
}
}
TEST_CASE("Thermal Controller", "[ThermalController]") {
const object_id_t THERMAL_CONTROLLER_ID = 0x123;
2022-02-10 18:15:33 +01:00
ThermalController controller(THERMAL_CONTROLLER_ID, objects::NO_OBJECT);
ObjectManager::instance()->setObjectFactoryFunction(factory, nullptr);
ObjectManager::instance()->initialize();
ObjectManager::instance()->printList();
controller.initializeAfterTaskCreation();
MessageQueueId_t controllerQueue = controller.getCommandQueue();
CommandMessage modeMessage;
ModeMessage::setModeMessage(&modeMessage, ModeMessage::CMD_MODE_COMMAND,
ControllerBase::MODE_NORMAL, HasModesIF::SUBMODE_NONE);
MessageQueueIF* commandQueue = QueueFactory::instance()->createMessageQueue(
5, MessageQueueMessage::MAX_MESSAGE_SIZE);
commandQueue->sendMessage(controllerQueue,&modeMessage);
REQUIRE(controller.performOperation(0) == HasReturnvaluesIF::RETURN_OK);
thermalControllerDefinitions::ComponentTemperatures componentTemperatures(THERMAL_CONTROLLER_ID);
componentTemperatures.read();
REQUIRE(componentTemperatures.rw == 0);
componentTemperatures.commit();
QueueFactory::instance()->deleteMessageQueue(commandQueue);
2022-02-10 18:15:33 +01:00
}