##// END OF EJS Templates
Defines fuzzing operations...
Alexandre Leroux -
r1202:1d0fdfceb8fb
parent child
Show More
@@ -0,0 +1,48
1 #include "FuzzingOperations.h"
2
3 #include <Variable/Variable.h>
4 #include <Variable/VariableController.h>
5
6 Q_LOGGING_CATEGORY(LOG_FuzzingOperations, "FuzzingOperations")
7
8 namespace {
9
10 struct CreateOperation : public IFuzzingOperation {
11 bool canExecute(std::shared_ptr<Variable> variable) const override {
12 /// @todo: complete
13 return false;
14 }
15
16 void execute(std::shared_ptr<Variable>& variable, VariableController &variableController, const Properties &properties) const override{
17 /// @todo: complete
18 }
19 };
20
21 struct UnknownOperation : public IFuzzingOperation {
22 bool canExecute(std::shared_ptr<Variable> variable) const override {
23 Q_UNUSED(variable);
24 return false;
25 }
26
27 void execute(std::shared_ptr<Variable>& variable, VariableController &variableController, const Properties &properties) const override{
28 Q_UNUSED(variable);
29 Q_UNUSED(variableController);
30 Q_UNUSED(properties);
31 // Does nothing
32 }
33 };
34
35 } // namespace
36
37 std::unique_ptr<IFuzzingOperation> FuzzingOperationFactory::create(FuzzingOperationType type)
38 {
39 switch (type) {
40 case FuzzingOperationType::CREATE:
41 return std::make_unique<CreateOperation>();
42 default:
43 // Default case returns unknown operation
44 break;
45 }
46
47 return std::make_unique<UnknownOperation>();
48 }
@@ -0,0 +1,47
1 #ifndef SCIQLOP_FUZZINGOPERATIONS_H
2 #define SCIQLOP_FUZZINGOPERATIONS_H
3
4 #include "FuzzingDefs.h"
5
6 #include <memory>
7 #include <set>
8
9 #include <QLoggingCategory>
10 #include <QMetaType>
11
12 Q_DECLARE_LOGGING_CATEGORY(LOG_FuzzingOperations)
13
14 class Variable;
15 class VariableController;
16
17 /**
18 * Enumeration of types of existing fuzzing operations
19 */
20 enum class FuzzingOperationType {
21 CREATE
22 };
23
24 /// Interface that represents an operation that can be executed during a fuzzing test
25 struct IFuzzingOperation {
26 virtual ~IFuzzingOperation() noexcept = default;
27
28 /// Checks if the operation can be executed according to the current state of the variable passed in parameter
29 virtual bool canExecute(std::shared_ptr<Variable> variable) const = 0;
30 /// Executes the operation on the variable passed in parameter
31 /// @param variable the variable on which to execute the operation
32 /// @param variableController the controller associated to the operation
33 /// @param properties properties that can be used to configure the operation
34 /// @remarks variable is passed as a reference because, according to the operation, it can be modified (in/out parameter)
35 virtual void execute(std::shared_ptr<Variable> &variable, VariableController& variableController, const Properties& properties = {}) const = 0;
36 };
37
38 /// Factory of @sa IFuzzingOperation
39 struct FuzzingOperationFactory {
40 /// Creates a fuzzing operation from a type
41 static std::unique_ptr<IFuzzingOperation> create(FuzzingOperationType type);
42 };
43
44 using OperationsTypes = std::set<FuzzingOperationType>;
45 Q_DECLARE_METATYPE(OperationsTypes)
46
47 #endif // SCIQLOP_FUZZINGOPERATIONS_H
@@ -69,6 +69,8 tests = [
69 69 tests_sources = [
70 70 'tests/FuzzingDefs.h',
71 71 'tests/FuzzingDefs.cpp',
72 'tests/FuzzingOperations.h',
73 'tests/FuzzingOperations.cpp',
72 74 ]
73 75
74 76 foreach unit_test : tests
@@ -1,4 +1,5
1 1 #include "FuzzingDefs.h"
2 #include "FuzzingOperations.h"
2 3 #include <Network/NetworkController.h>
3 4 #include <SqpApplication.h>
4 5 #include <Time/TimeController.h>
@@ -14,6 +15,11 Q_LOGGING_CATEGORY(LOG_TestAmdaFuzzing, "TestAmdaFuzzing")
14 15
15 16 namespace {
16 17
18 // /////// //
19 // Aliases //
20 // /////// //
21
22 using OperationsPool = std::set<std::shared_ptr<IFuzzingOperation> >;
17 23 // ///////// //
18 24 // Constants //
19 25 // ///////// //
General Comments 0
You need to be logged in to leave comments. Login now