Hotwheels-Cluster 1.2
Creation of Cluster APP for SEA:ME project.
 
Loading...
Searching...
No Matches
test_VehicleDataManager.cpp
Go to the documentation of this file.
1
15
16#include <QSignalSpy>
18#include <gtest/gtest.h>
19
27class VehicleDataManagerTest : public ::testing::Test
28{
29protected:
31
32 void SetUp() override { vehicleDataManager = new VehicleDataManager(); }
33
34 void TearDown() override { delete vehicleDataManager; }
35};
36
45TEST_F(VehicleDataManagerTest, RpmDataEmitsSignal)
46{
47 QSignalSpy canDataSpy(vehicleDataManager, &VehicleDataManager::canDataProcessed);
48
49 int expectedRpm = 3000;
50
51 vehicleDataManager->handleRpmData(expectedRpm);
52
53 ASSERT_EQ(canDataSpy.count(), 1);
54 QList<QVariant> args = canDataSpy.takeFirst();
55 ASSERT_FLOAT_EQ(args.at(0).toFloat(), 0.0f); // Speed remains unchanged
56 ASSERT_EQ(args.at(1).toInt(), expectedRpm);
57}
58
67TEST_F(VehicleDataManagerTest, SpeedDataEmitsSignalInKilometers)
68{
69 QSignalSpy canDataSpy(vehicleDataManager, &VehicleDataManager::canDataProcessed);
70
71 float expectedSpeed = 120.5f;
72
73 vehicleDataManager->handleSpeedData(expectedSpeed);
74
75 ASSERT_EQ(canDataSpy.count(), 1);
76 QList<QVariant> args = canDataSpy.takeFirst();
77 ASSERT_FLOAT_EQ(args.at(0).toFloat(), expectedSpeed);
78 ASSERT_EQ(args.at(1).toInt(), 0); // RPM remains unchanged
79}
80
89TEST_F(VehicleDataManagerTest, MileageDataEmitsSignalOnChange)
90{
91 QSignalSpy mileageSpy(vehicleDataManager, &VehicleDataManager::mileageUpdated);
92
93 double expectedMileage = 5000.75;
94
95 vehicleDataManager->handleMileageUpdate(expectedMileage);
96
97 ASSERT_EQ(mileageSpy.count(), 1);
98 QList<QVariant> args = mileageSpy.takeFirst();
99 ASSERT_DOUBLE_EQ(args.at(0).toDouble(), expectedMileage);
100
101 // Sending the same data should NOT emit the signal again
102 vehicleDataManager->handleMileageUpdate(expectedMileage);
103 ASSERT_EQ(mileageSpy.count(), 0);
104}
105
114TEST_F(VehicleDataManagerTest, DirectionDataEmitsSignalOnChange)
115{
116 QSignalSpy engineDataSpy(vehicleDataManager, &VehicleDataManager::engineDataProcessed);
117
118 CarDirection expectedDirection = CarDirection::Drive;
119
120 vehicleDataManager->handleDirectionData(expectedDirection);
121
122 ASSERT_EQ(engineDataSpy.count(), 1);
123 QList<QVariant> args = engineDataSpy.takeFirst();
124 ASSERT_EQ(args.at(0).value<CarDirection>(), expectedDirection);
125 ASSERT_EQ(args.at(1).toInt(), 0); // Steering remains unchanged
126
127 // Sending the same direction should NOT emit the signal again
128 vehicleDataManager->handleDirectionData(expectedDirection);
129 ASSERT_EQ(engineDataSpy.count(), 0);
130}
131
140TEST_F(VehicleDataManagerTest, SteeringDataEmitsSignalOnChange)
141{
142 QSignalSpy engineDataSpy(vehicleDataManager, &VehicleDataManager::engineDataProcessed);
143
144 int expectedAngle = 15;
145
146 vehicleDataManager->handleSteeringData(expectedAngle);
147
148 ASSERT_EQ(engineDataSpy.count(), 1);
149 QList<QVariant> args = engineDataSpy.takeFirst();
150 ASSERT_EQ(args.at(0).value<CarDirection>(), CarDirection::Stop); // Direction remains unchanged
151 ASSERT_EQ(args.at(1).toInt(), expectedAngle);
152
153 // Sending the same steering angle should NOT emit the signal again
154 vehicleDataManager->handleSteeringData(expectedAngle);
155 ASSERT_EQ(engineDataSpy.count(), 0);
156}
Definition of the VehicleDataManager class.
CarDirection
Enum class for the car direction.
Definition enums.hpp:30
Test fixture for testing the VehicleDataManager class.
VehicleDataManager * vehicleDataManager
Class that manages the data received from the car's systems. QObject.
void canDataProcessed(float processedSpeed, int processedRpm)
void engineDataProcessed(CarDirection processedDirection, int processedAngle)
void mileageUpdated(double mileage)
TEST_F(VehicleDataManagerTest, RpmDataEmitsSignal)
Ensures that the RPM data emits a signal when changed.