#include #include #include #include #include #include #include #include "../../dummies/TemperatureSensorInserter.h" #include "../testEnvironment.h" #include "mission/core/GenericFactory.h" #include "test/gpio/DummyGpioIF.h" TEST_CASE("Thermal Controller", "[ThermalController]") { const object_id_t THERMAL_CONTROLLER_ID = 0x123; new TemperatureSensorInserter(objects::THERMAL_TEMP_INSERTER); auto dummyGpioIF = new DummyGpioIF(); auto dummySwitcher = new DummyPowerSwitcher(objects::PCDU_HANDLER, 18, 0); // TODO: Create dummy heater handler HeaterHandler* heaterHandler = nullptr; // new ThermalController(objects::THERMAL_CONTROLLER); ObjectFactory::createGenericHeaterComponents(*dummyGpioIF, *dummySwitcher, heaterHandler); // testEnvironment::initialize(); ThermalController controller(THERMAL_CONTROLLER_ID, *heaterHandler); ReturnValue_t result = controller.initialize(); REQUIRE(result == returnvalue::OK); PeriodicTaskIF* thermalTask = TaskFactory::instance()->createPeriodicTask( "THERMAL_CTL_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, nullptr); result = thermalTask->addComponent(THERMAL_CONTROLLER_ID); REQUIRE(result == returnvalue::OK); REQUIRE(controller.initializeAfterTaskCreation() == returnvalue::OK); testEnvironment::eventManager->clearEventList(); 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) == returnvalue::OK); REQUIRE(testEnvironment::eventManager->isEventInEventList( THERMAL_CONTROLLER_ID, HasModesIF::MODE_INFO, ControllerBase::MODE_NORMAL, HasModesIF::SUBMODE_NONE) == true); QueueFactory::instance()->deleteMessageQueue(commandQueue); }