diff --git a/plugins/amda/tests/FuzzingValidators.cpp b/plugins/amda/tests/FuzzingValidators.cpp index cff2789..d3db344 100644 --- a/plugins/amda/tests/FuzzingValidators.cpp +++ b/plugins/amda/tests/FuzzingValidators.cpp @@ -1,5 +1,7 @@ #include "FuzzingValidators.h" +#include + #include Q_LOGGING_CATEGORY(LOG_FuzzingValidators, "FuzzingValidators") @@ -24,3 +26,24 @@ private: }; } // namespace + +std::unique_ptr FuzzingValidatorFactory::create(FuzzingValidatorType type) +{ + switch (type) { + case FuzzingValidatorType::DATA: + return std::make_unique([](const VariableState &variableState) { + /// @todo: complete + }); + case FuzzingValidatorType::RANGE: + return std::make_unique([](const VariableState &variableState) { + /// @todo: complete + }); + default: + // Default case returns invalid validator + break; + } + + // Invalid validator + return std::make_unique( + [](const VariableState &) { QFAIL("Invalid validator"); }); +} diff --git a/plugins/amda/tests/FuzzingValidators.h b/plugins/amda/tests/FuzzingValidators.h index cd16e09..5ef7b25 100644 --- a/plugins/amda/tests/FuzzingValidators.h +++ b/plugins/amda/tests/FuzzingValidators.h @@ -7,6 +7,12 @@ Q_DECLARE_LOGGING_CATEGORY(LOG_FuzzingValidators) class VariableState; +/// Types of validators that can be defined +enum class FuzzingValidatorType { + DATA, ///< Validates variable's data + RANGE ///< Validates variable's range +}; + /** * Struct that represents a validator. A validator checks if the state of a variable is valid at the * moment it is called during a fuzzing test @@ -18,4 +24,10 @@ struct IFuzzingValidator { virtual void validate(const VariableState &variableState) const = 0; }; +/// Factory of @sa IFuzzingValidator +struct FuzzingValidatorFactory { + /// Creates a validator according to the type passed in parameter + static std::unique_ptr create(FuzzingValidatorType type); +}; + #endif // SCIQLOP_FUZZINGVALIDATORS_H