##// END OF EJS Templates
Completes fuzzing test structure by setting initial range for the time controller
Completes fuzzing test structure by setting initial range for the time controller

File last commit:

r1177:94f6e8c9cecc
r1178:324a3ee21c58
Show More
FuzzingOperations.cpp
64 lines | 2.2 KiB | text/x-c | CppLexer
/ plugins / amda / tests / FuzzingOperations.cpp
Alexandre Leroux
Defines fuzzing operations...
r1171 #include "FuzzingOperations.h"
Alexandre Leroux
Implements "Variable creation" operation (2)
r1177 #include "FuzzingUtils.h"
#include <Data/IDataProvider.h>
Alexandre Leroux
Defines fuzzing operations...
r1171
#include <Variable/Variable.h>
#include <Variable/VariableController.h>
Alexandre Leroux
Implements "Variable creation" operation (2)
r1177 #include <QUuid>
Alexandre Leroux
Defines fuzzing operations...
r1171 Q_LOGGING_CATEGORY(LOG_FuzzingOperations, "FuzzingOperations")
namespace {
struct CreateOperation : public IFuzzingOperation {
bool canExecute(std::shared_ptr<Variable> variable) const override {
Alexandre Leroux
Implements "Variable creation" operation (2)
r1177 // A variable can be created only if it doesn't exist yet
return variable == nullptr;
Alexandre Leroux
Defines fuzzing operations...
r1171 }
void execute(std::shared_ptr<Variable>& variable, VariableController &variableController, const Properties &properties) const override{
Alexandre Leroux
Implements "Variable creation" operation (2)
r1177 // Retrieves metadata pool from properties, and choose one of the metadata entries to associate it with the variable
auto metaDataPool = properties.value(METADATA_POOL_PROPERTY).value<MetadataPool>();
auto variableMetadata = RandomGenerator::instance().randomChoice(metaDataPool);
// Retrieves provider
auto variableProvider = properties.value(PROVIDER_PROPERTY).value<std::shared_ptr<IDataProvider>>();
auto variableName = QString{"Var_%1"}.arg(QUuid::createUuid().toString());
qCInfo(LOG_FuzzingOperations()) << "Creating variable" << variableName << "(metadata:" << variableMetadata << ")";
auto newVariable = variableController.createVariable(variableName, variableMetadata, variableProvider);
std::swap(variable, newVariable);
Alexandre Leroux
Defines fuzzing operations...
r1171 }
};
struct UnknownOperation : public IFuzzingOperation {
bool canExecute(std::shared_ptr<Variable> variable) const override {
Q_UNUSED(variable);
return false;
}
void execute(std::shared_ptr<Variable>& variable, VariableController &variableController, const Properties &properties) const override{
Q_UNUSED(variable);
Q_UNUSED(variableController);
Q_UNUSED(properties);
// Does nothing
}
};
} // namespace
std::unique_ptr<IFuzzingOperation> FuzzingOperationFactory::create(FuzzingOperationType type)
{
switch (type) {
case FuzzingOperationType::CREATE:
return std::make_unique<CreateOperation>();
default:
// Default case returns unknown operation
break;
}
return std::make_unique<UnknownOperation>();
}