diff --git a/plugins/amda/tests/FuzzingOperations.cpp b/plugins/amda/tests/FuzzingOperations.cpp index 6a1ef4a..c917a2e 100644 --- a/plugins/amda/tests/FuzzingOperations.cpp +++ b/plugins/amda/tests/FuzzingOperations.cpp @@ -1,20 +1,36 @@ #include "FuzzingOperations.h" +#include "FuzzingUtils.h" + +#include #include #include +#include + Q_LOGGING_CATEGORY(LOG_FuzzingOperations, "FuzzingOperations") namespace { struct CreateOperation : public IFuzzingOperation { bool canExecute(std::shared_ptr variable) const override { - /// @todo: complete - return false; + // A variable can be created only if it doesn't exist yet + return variable == nullptr; } void execute(std::shared_ptr& variable, VariableController &variableController, const Properties &properties) const override{ - /// @todo: complete + // 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(); + auto variableMetadata = RandomGenerator::instance().randomChoice(metaDataPool); + + // Retrieves provider + auto variableProvider = properties.value(PROVIDER_PROPERTY).value>(); + + 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); } };