#pragma once #include #include #include class TestCase { public: using TestCaseFunction = std::function; TestCase(const std::string& name, const std::string& tags, TestCaseFunction func) : mTestFunction(func), mName(name), mTags(tags) { }; virtual ~TestCase() = default; const std::string& getName() const { return mName; } const std::string& getTags() const { return mTags; } virtual void run() { mTestFunction(); }; public: TestCaseFunction mTestFunction{nullptr}; private: std::string mName; std::string mTags; }; using TestCasePtr = std::unique_ptr;