improving mocks
This commit is contained in:
@ -5,4 +5,5 @@ target_sources(${FSFW_TEST_TGT} PRIVATE
|
||||
CookieIFMock.cpp
|
||||
ComIFMock.cpp
|
||||
MessageQueueMockBase.cpp
|
||||
InternalErrorReporterMock.cpp
|
||||
)
|
||||
|
13
unittests/mocks/InternalErrorReporterMock.cpp
Normal file
13
unittests/mocks/InternalErrorReporterMock.cpp
Normal file
@ -0,0 +1,13 @@
|
||||
#include "InternalErrorReporterMock.h"
|
||||
|
||||
InternalErrorReporterMock::InternalErrorReporterMock() = default;
|
||||
|
||||
void InternalErrorReporterMock::queueMessageNotSent() {
|
||||
queueMsgNotSentCallCnt++;
|
||||
}
|
||||
void InternalErrorReporterMock::lostTm() {
|
||||
lostTmCallCnt++;
|
||||
}
|
||||
void InternalErrorReporterMock::storeFull() {
|
||||
storeFullCallCnt++;
|
||||
}
|
@ -5,7 +5,14 @@
|
||||
|
||||
class InternalErrorReporterMock: public InternalErrorReporterIF {
|
||||
public:
|
||||
unsigned int queueMsgNotSentCallCnt = 0;
|
||||
unsigned int lostTmCallCnt = 0;
|
||||
unsigned int storeFullCallCnt = 0;
|
||||
InternalErrorReporterMock();
|
||||
void queueMessageNotSent() override;
|
||||
void lostTm() override;
|
||||
void storeFull() override;
|
||||
|
||||
private:
|
||||
};
|
||||
#endif // FSFW_TESTS_INTERNALERRORREPORTERMOCK_H
|
||||
|
@ -43,10 +43,13 @@ ReturnValue_t MessageQueueMockBase::flush(uint32_t* count) {
|
||||
ReturnValue_t MessageQueueMockBase::sendMessageFrom(MessageQueueId_t sendTo,
|
||||
MessageQueueMessageIF* message,
|
||||
MessageQueueId_t sentFrom, bool ignoreFault) {
|
||||
messageSent = true;
|
||||
messageSentCounter++;
|
||||
MessageQueueMessage& messageRef = *(dynamic_cast<MessageQueueMessage*>(message));
|
||||
messagesSentQueue.push(messageRef);
|
||||
auto iter = sendMap.find(sendTo);
|
||||
if (iter == sendMap.end()) {
|
||||
sendMap.emplace(sendTo, SendInfo(message, 1));
|
||||
} else {
|
||||
iter->second.callCount += 1;
|
||||
iter->second.msgs.push(message);
|
||||
}
|
||||
return HasReturnvaluesIF::RETURN_OK;
|
||||
}
|
||||
|
||||
@ -55,6 +58,12 @@ ReturnValue_t MessageQueueMockBase::reply(MessageQueueMessageIF* message) {
|
||||
}
|
||||
|
||||
void MessageQueueMockBase::clearMessages(bool clearCommandMessages) {
|
||||
for (const auto& destInfo: sendMap) {
|
||||
if (clearCommandMessages) {
|
||||
CommandMessage message;
|
||||
std::memcpy(message.getBuffer(), destInfo.second.msgs.front()->getBuffer(),
|
||||
message.getMessageSize());
|
||||
}
|
||||
while (not messagesSentQueue.empty()) {
|
||||
if (clearCommandMessages) {
|
||||
CommandMessage message;
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include <cstring>
|
||||
#include <queue>
|
||||
#include <map>
|
||||
|
||||
#include "CatchDefinitions.h"
|
||||
#include "fsfw/ipc/CommandMessage.h"
|
||||
@ -10,14 +11,21 @@
|
||||
#include "fsfw/ipc/MessageQueueIF.h"
|
||||
#include "fsfw/ipc/MessageQueueMessage.h"
|
||||
|
||||
struct SendInfo {
|
||||
explicit SendInfo(MessageQueueMessageIF* initMsg, unsigned int initCallCnt = 1): callCount(initCallCnt) {
|
||||
msgs.push(initMsg);
|
||||
}
|
||||
unsigned int callCount = 0;
|
||||
std::queue<MessageQueueMessageIF*> msgs;
|
||||
};
|
||||
|
||||
class MessageQueueMockBase : public MessageQueueBase {
|
||||
public:
|
||||
MessageQueueMockBase();
|
||||
|
||||
explicit MessageQueueMockBase(MessageQueueId_t queueId);
|
||||
|
||||
uint8_t messageSentCounter = 0;
|
||||
bool messageSent = false;
|
||||
std::map<MessageQueueId_t, SendInfo> sendMap;
|
||||
|
||||
bool wasMessageSent(uint8_t* messageSentCounter_ = nullptr, bool resetCounter = true);
|
||||
|
||||
@ -37,7 +45,6 @@ class MessageQueueMockBase : public MessageQueueBase {
|
||||
|
||||
void clearMessages(bool clearCommandMessages = true);
|
||||
private:
|
||||
std::queue<MessageQueueMessage> messagesSentQueue;
|
||||
};
|
||||
|
||||
#endif /* FSFW_UNITTEST_TESTS_MOCKS_MESSAGEQUEUEMOCKBASE_H_ */
|
||||
|
Reference in New Issue
Block a user