feat: custom test

This commit is contained in:
Rendo 2026-09-02 19:39:42 +05:00
commit 3b25f2dd5c

View file

@ -1,15 +1,14 @@
#include <iostream> #include <iostream>
#include <string>
#include <vector> #include <vector>
#include <functional> #include <functional>
typedef std::function<bool()> TestFunction;
class Test { class Test {
private: private:
TestFunction complete; std::function<bool()> complete;
public: public:
std::string test_name; std::string test_name;
Test(std::string name, TestFunction complete): test_name(name), complete(complete){}; Test(std::string name, std::function<bool()> complete): test_name(name), complete(complete){};
bool evaluate(); bool evaluate();
}; };
@ -21,11 +20,14 @@ class TestSuite {
std::vector<Test> tests; std::vector<Test> tests;
public: public:
TestSuite(std::string); TestSuite(std::string);
void run(); void run();
template<class T> template<class T>
TestSuite* eq(std::string, T, T); TestSuite* eq(std::string, T, T);
template<class T> template<class T>
TestSuite* neq(std::string, T, T); TestSuite* neq(std::string, T, T);
TestSuite* custom(std::string, std::function<bool()>);
}; };
TestSuite::TestSuite(std::string name): suite_name(name) { TestSuite::TestSuite(std::string name): suite_name(name) {
@ -44,6 +46,11 @@ TestSuite* TestSuite::neq(std::string test_name, T test_value, T expected_value)
return this; return this;
} }
TestSuite* TestSuite::custom(std::string test_name, std::function<bool()> completness_function) {
tests.push_back(Test(test_name, completness_function));
return this;
}
void TestSuite::run() { void TestSuite::run() {
std::cout << "=== " << suite_name << " ===" << std::endl; std::cout << "=== " << suite_name << " ===" << std::endl;
int completed = 0; int completed = 0;