Hotwheels-Cluster 1.2
Creation of Cluster APP for SEA:ME project.
 
Loading...
Searching...
No Matches
test_int_CanBusManager.cpp
Go to the documentation of this file.
1
14
15#include <QCoreApplication>
16#include <QDebug>
17#include <QSignalSpy>
18#include "CanBusManager.hpp"
19#include "MCP2515Controller.hpp"
20#include <gtest/gtest.h>
21
27class CanBusManagerTest : public ::testing::Test
28{
29protected:
30 static QCoreApplication *app;
33
34 static void SetUpTestSuite()
35 {
36 int argc = 0;
37 char *argv[] = {nullptr};
38 app = new QCoreApplication(argc, argv);
39 }
40
41 static void TearDownTestSuite() { delete app; }
42
43 void SetUp() override
44 {
45 controller = new MCP2515Controller("/dev/spidev0.0");
46 ASSERT_NE(controller, nullptr);
47
49 ASSERT_NE(canBusManager, nullptr);
50 }
51
52 void TearDown() override
53 {
54 delete canBusManager;
55 delete controller;
56 }
57};
58
60QCoreApplication *CanBusManagerTest::app = nullptr;
61
70TEST_F(CanBusManagerTest, ForwardSpeedDataFromMCP2515)
71{
72 QSignalSpy spy(canBusManager, &CanBusManager::speedUpdated);
73
74 emit controller->speedUpdated(88.8f);
75 QCoreApplication::processEvents();
76
77 ASSERT_GT(spy.count(), 0) << "Signal was not emitted!";
78 QList<QVariant> args = spy.takeFirst();
79 EXPECT_FLOAT_EQ(args.at(0).toFloat(), 88.8f);
80}
81
90TEST_F(CanBusManagerTest, ForwardRpmDataFromMCP2515)
91{
92 QSignalSpy spy(canBusManager, &CanBusManager::rpmUpdated);
93
94 emit controller->rpmUpdated(4500);
95 QCoreApplication::processEvents();
96
97 ASSERT_GT(spy.count(), 0) << "Signal was not emitted!";
98 QList<QVariant> args = spy.takeFirst();
99 EXPECT_EQ(args.at(0).toInt(), 4500);
100}
101
109TEST_F(CanBusManagerTest, InitializeCanBusManager)
110{
111 ASSERT_TRUE(canBusManager->initialize()) << "Initialization failed!";
112 ASSERT_NE(canBusManager->getThread(), nullptr) << "Thread not created!";
113 ASSERT_TRUE(canBusManager->getThread()->isRunning()) << "Thread did not start!";
114}
115
122TEST_F(CanBusManagerTest, ManagerCleanUpBehavior)
123{
124 CanBusManager *tmpManager = new CanBusManager("/dev/spidev0.0");
125 ASSERT_NE(tmpManager, nullptr);
126
127 ASSERT_EQ(tmpManager->getThread(), nullptr) << "Thread created too soon!";
128
129 tmpManager->initialize();
130
131 ASSERT_NE(tmpManager->getThread(), nullptr) << "Thread not created!";
132 ASSERT_TRUE(tmpManager->getThread()->isRunning()) << "Thread did not start!";
133
134 delete tmpManager;
135
136 ASSERT_EQ(tmpManager->getThread(), nullptr) << "Thread not deleted!";
137}
Definition of the CanBusManager class.
Definition of the MCP2515Controller class.
Class to test the integration between the CanBusManager and the MCP2515 controller.
static QCoreApplication * app
Initialize static member.
IMCP2515Controller * controller
Class that manages the CAN bus communication. QObject.
void rpmUpdated(int newRpm)
Signal emitted when the RPM is updated.
QThread * getThread() const
void speedUpdated(float newSpeed)
Signal emitted when the speed is updated.
bool initialize()
Initializes the CanBusManager.
Interface for the MCP2515 CAN controller. QObject.
Class that controls the MCP2515 CAN controller. IMCP2515Controller.
TEST_F(CanBusManagerTest, ForwardSpeedDataFromMCP2515)
Ensures that the CanBusManager forwards speed data from the MCP2515 controller.