Hotwheels-Cluster 1.2
Creation of Cluster APP for SEA:ME project.
 
Loading...
Searching...
No Matches
test_MileageManager.cpp
Go to the documentation of this file.
1
15
16#include <QSignalSpy>
17#include "MileageManager.hpp"
20#include <gmock/gmock.h>
21#include <gtest/gtest.h>
22
23using ::testing::_;
24using ::testing::NiceMock;
25using ::testing::Return;
26
34class MileageManagerTest : public ::testing::Test
35{
36protected:
37 NiceMock<MockMileageCalculator> mockCalculator;
38 NiceMock<MockMileageFileHandler> mockFileHandler;
39 QString testFilePath = "test_mileage.txt";
41
46
47 void TearDown() override { delete mileageManager; }
48};
49
57TEST_F(MileageManagerTest, Initialize_LoadsMileageFromFile)
58{
59 EXPECT_CALL(mockFileHandler, readMileage()).WillOnce(Return(123.45)); // Simulate stored mileage
60
61 // Allow writeMileage to be called more than once due to shutdown
62 EXPECT_CALL(mockFileHandler, writeMileage(123.45)).WillRepeatedly(Return());
63
64 mileageManager->initialize();
65 mileageManager->saveMileage();
66}
67
75TEST_F(MileageManagerTest, OnSpeedUpdated_CallsCalculator)
76{
77 EXPECT_CALL(mockCalculator, addSpeed(50.0)).Times(1);
78 mileageManager->onSpeedUpdated(50.0);
79}
80
88TEST_F(MileageManagerTest, UpdateMileage_EmitsMileageUpdatedSignal)
89{
90 EXPECT_CALL(mockCalculator, calculateDistance()).WillOnce(Return(10.5));
91
92 QSignalSpy spy(mileageManager, &MileageManager::mileageUpdated);
93 ASSERT_TRUE(spy.isValid());
94
95 mileageManager->updateMileage();
96
97 ASSERT_EQ(spy.count(), 1);
98 QList<QVariant> arguments = spy.takeFirst();
99 EXPECT_DOUBLE_EQ(arguments.at(0).toDouble(), 10.5);
100}
101
109TEST_F(MileageManagerTest, SaveMileage_CallsFileHandler)
110{
111 EXPECT_CALL(mockFileHandler, writeMileage(200.0)).WillRepeatedly(Return());
112
113 EXPECT_CALL(mockCalculator, calculateDistance()).WillOnce(Return(50.0));
114 mileageManager->updateMileage(); // Adds 50.0
115
116 EXPECT_CALL(mockCalculator, calculateDistance()).WillOnce(Return(150.0));
117 mileageManager->updateMileage(); // Adds another 150.0
118
119 mileageManager->saveMileage();
120}
Definition of the MileageManager class.
File containing the Mock class of the MileageCalculator class.
File containing the Mock class of the MileageFileHandler class.
Class to test the integration between the MileageManager and the MileageCalculator and MileageFileHan...
NiceMock< MockMileageFileHandler > mockFileHandler
NiceMock< MockMileageCalculator > mockCalculator
Class that manages the mileage of a vehicle. QObject.
void mileageUpdated(double mileage)
TEST_F(MileageManagerTest, Initialize_LoadsMileageFromFile)
Ensures that the mileage manager initializes correctly.