Hotwheels-Cluster 1.2
Creation of Cluster APP for SEA:ME project.
 
Loading...
Searching...
No Matches
test_int_MileageManager.cpp
Go to the documentation of this file.
1
14
15#include <QCoreApplication>
16#include <QSignalSpy>
17#include "MileageCalculator.hpp"
19#include "MileageManager.hpp"
20#include <gtest/gtest.h>
21
27class MileageManagerTest : public ::testing::Test
28{
29protected:
30 static QCoreApplication *app;
34
35 static void SetUpTestSuite()
36 {
37 int argc = 0;
38 char *argv[] = {nullptr};
39 app = new QCoreApplication(argc, argv);
40 }
41
42 static void TearDownTestSuite() { delete app; }
43
44 void SetUp() override
45 {
47 fileHandler = new MileageFileHandler("/home/hotweels/app_data/test_mileage.json");
48 mileageManager = new MileageManager("/home/hotweels/app_data/test_mileage.json",
51 }
52
53 void TearDown() override
54 {
55 delete mileageManager;
56 delete calculator;
57 delete fileHandler;
58 }
59};
60
62QCoreApplication *MileageManagerTest::app = nullptr;
63
71TEST_F(MileageManagerTest, ForwardMileageData)
72{
73 QSignalSpy spy(mileageManager, &MileageManager::mileageUpdated);
74
75 mileageManager->onSpeedUpdated(10.0f);
76 QCoreApplication::processEvents();
77
78 ASSERT_GT(spy.count(), 0);
79 QList<QVariant> args = spy.takeFirst();
80 EXPECT_DOUBLE_EQ(args.at(0).toDouble(), 10.0);
81}
82
90TEST_F(MileageManagerTest, InitializeMileageManager)
91{
92 mileageManager->initialize();
93 QSignalSpy spy(mileageManager, &MileageManager::mileageUpdated);
94
95 QCoreApplication::processEvents();
96 ASSERT_GT(spy.count(), 0);
97 QList<QVariant> args = spy.takeFirst();
98 EXPECT_DOUBLE_EQ(args.at(0).toDouble(), 0.0);
99}
100
108TEST_F(MileageManagerTest, UpdateMileageOnSpeedUpdate)
109{
110 QSignalSpy spy(mileageManager, &MileageManager::mileageUpdated);
111
112 mileageManager->onSpeedUpdated(10.0f);
113 QCoreApplication::processEvents();
114
115 ASSERT_GT(spy.count(), 0);
116 QList<QVariant> args = spy.takeFirst();
117 EXPECT_DOUBLE_EQ(args.at(0).toDouble(), 10.0);
118}
119
128{
129 mileageManager->onSpeedUpdated(5.0f);
130 QCoreApplication::processEvents();
131
132 mileageManager->saveMileage();
133 QCoreApplication::processEvents();
134
135 double savedMileage = mileageManager->getTotalMileage();
136 EXPECT_DOUBLE_EQ(savedMileage, 5.0);
137}
138
146TEST_F(MileageManagerTest, UpdateTimerInterval)
147{
148 QSignalSpy spy(mileageManager, &MileageManager::mileageUpdated);
149
150 mileageManager->initialize();
151 QTimer::singleShot(1000, QCoreApplication::instance(), &QCoreApplication::quit);
152 QCoreApplication::processEvents();
153
154 ASSERT_GT(spy.count(), 0);
155}
156
164TEST_F(MileageManagerTest, ShutdownMileageManager)
165{
166 mileageManager->initialize();
167 mileageManager->shutdown();
168
169 double finalMileage = mileageManager->getTotalMileage();
170 EXPECT_DOUBLE_EQ(finalMileage, 0.0);
171}
Definition of the MileageCalculator class.
Definition of the MileageFileHandler class.
Definition of the MileageManager class.
Interface for calculating the mileage of a vehicle.
Interface for reading and writing the mileage of a vehicle to a file.
Class that calculates the total distance traveled based on speed measurements.
Class that manages the mileage file.
Class to test the integration between the MileageManager and the MileageCalculator and MileageFileHan...
static QCoreApplication * app
Initialize static member.
IMileageCalculator * calculator
IMileageFileHandler * fileHandler
Class that manages the mileage of a vehicle. QObject.
void mileageUpdated(double mileage)
TEST_F(MileageManagerTest, ForwardMileageData)
Ensures that the MileageManager forwards mileage data.