##// END OF EJS Templates
Add unit test of variable deletion in VariableController
Alexandre Leroux -
r665:130573c63dd1
parent child
Show More
@@ -0,0 +1,72
1 #include <QObject>
2 #include <QtTest>
3
4 #include <Data/IDataProvider.h>
5 #include <Time/TimeController.h>
6 #include <Variable/Variable.h>
7 #include <Variable/VariableController.h>
8
9 #include <memory>
10
11 namespace {
12
13 /// Provider used for the tests
14 class TestProvider : public IDataProvider {
15 void requestDataLoading(QUuid acqIdentifier, const DataProviderParameters &parameters) override
16 {
17 // Does nothing
18 }
19
20 void requestDataAborting(QUuid acqIdentifier) override
21 {
22 // Does nothing
23 }
24 };
25
26 /// Generates a time controller for the tests
27 std::unique_ptr<TimeController> defaultTimeController()
28 {
29 auto timeController = std::make_unique<TimeController>();
30
31 QDateTime start{QDate{2017, 01, 01}, QTime{0, 0, 0, 0}};
32 QDateTime end{QDate{2017, 01, 02}, QTime{0, 0, 0, 0}};
33 timeController->onTimeToUpdate(
34 SqpRange{DateUtils::secondsSinceEpoch(start), DateUtils::secondsSinceEpoch(end)});
35
36 return timeController;
37 }
38
39 } // namespace
40
41 class TestVariableController : public QObject {
42 Q_OBJECT
43
44 private slots:
45 /// Test removes variable from controller
46 void testDeleteVariable();
47 };
48
49 void TestVariableController::testDeleteVariable()
50 {
51 // Creates variable controller
52 auto timeController = defaultTimeController();
53 VariableController variableController{};
54 variableController.setTimeController(timeController.get());
55
56 // Creates a variable from the controller
57 auto variable
58 = variableController.createVariable("variable", {}, std::make_shared<TestProvider>());
59
60 qDebug() << QString::number(variable.use_count());
61
62 // Removes the variable from the controller
63 variableController.deleteVariable(variable);
64
65 // Verifies that the variable has been deleted: this implies that the number of shared_ptr
66 // objects referring to the variable is 1 (the reference of this scope). Otherwise, the deletion
67 // is considered invalid since the variable is still referenced in the controller
68 QVERIFY(variable.use_count() == 1);
69 }
70
71 QTEST_MAIN(TestVariableController)
72 #include "TestVariableController.moc"
General Comments 0
You need to be logged in to leave comments. Login now