diff --git a/plugins/amda/meson.build b/plugins/amda/meson.build index 52109e4..6c4e483 100644 --- a/plugins/amda/meson.build +++ b/plugins/amda/meson.build @@ -72,7 +72,9 @@ tests_sources = [ 'tests/FuzzingOperations.h', 'tests/FuzzingOperations.cpp', 'tests/FuzzingUtils.h', - 'tests/FuzzingUtils.cpp' + 'tests/FuzzingUtils.cpp', + 'tests/FuzzingValidators.h', + 'tests/FuzzingValidators.cpp' ] foreach unit_test : tests diff --git a/plugins/amda/tests/FuzzingValidators.cpp b/plugins/amda/tests/FuzzingValidators.cpp new file mode 100644 index 0000000..cff2789 --- /dev/null +++ b/plugins/amda/tests/FuzzingValidators.cpp @@ -0,0 +1,26 @@ +#include "FuzzingValidators.h" + +#include + +Q_LOGGING_CATEGORY(LOG_FuzzingValidators, "FuzzingValidators") + +namespace { + +/** + * Default implementation of @sa IFuzzingValidator. This validator takes as parameter of its + * construction a function of validation which is called in the validate() method + */ +class FuzzingValidator : public IFuzzingValidator { +public: + /// Signature of a validation function + using ValidationFunction = std::function; + + explicit FuzzingValidator(ValidationFunction fun) : m_Fun(std::move(fun)) {} + + void validate(const VariableState &variableState) const override { m_Fun(variableState); } + +private: + ValidationFunction m_Fun; +}; + +} // namespace diff --git a/plugins/amda/tests/FuzzingValidators.h b/plugins/amda/tests/FuzzingValidators.h new file mode 100644 index 0000000..cd16e09 --- /dev/null +++ b/plugins/amda/tests/FuzzingValidators.h @@ -0,0 +1,21 @@ +#ifndef SCIQLOP_FUZZINGVALIDATORS_H +#define SCIQLOP_FUZZINGVALIDATORS_H + +#include + +Q_DECLARE_LOGGING_CATEGORY(LOG_FuzzingValidators) + +class VariableState; + +/** + * 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 + */ +struct IFuzzingValidator { + virtual ~IFuzzingValidator() noexcept = default; + + /// Validates the variable's state passed in parameter + virtual void validate(const VariableState &variableState) const = 0; +}; + +#endif // SCIQLOP_FUZZINGVALIDATORS_H