@ -0,0 +1,11 @@ | |||||
CXX= clang++ | |||||
CXXFLAGS= --std=c++2a | |||||
all: tests | |||||
tests: bin/tests | |||||
./bin/tests | |||||
bin/tests: tests.cpp $(wildcard tests/*.cpp) | |||||
@mkdir -p $(@D) | |||||
$(CXX) $(CXXFLAGS) -Itests -Iinclude tests.cpp -o $@ |
@ -0,0 +1 @@ | |||||
#pragma once |
@ -0,0 +1,27 @@ | |||||
#include "test_scaffold.cpp" | |||||
#include "meta_test.cpp" | |||||
#include <iostream> | |||||
int main() | |||||
{ | |||||
uint failed = 0; | |||||
uint runned = 0; | |||||
for(auto& test : tests) | |||||
{ | |||||
++runned; | |||||
int value; | |||||
try{ | |||||
value = test->run(); | |||||
if(value) | |||||
{ | |||||
std::cout << test->name << " failed with "<< value << std::endl; | |||||
} | |||||
} catch (...) { | |||||
std::cout << test->name << " failed with an exception" << std::endl; | |||||
value = -1; | |||||
} | |||||
failed += (value != 0); | |||||
} | |||||
std::cout << "Runned "<<runned<<" tests with "<<failed<<" failures" << std::endl; | |||||
return 0; | |||||
} |
@ -0,0 +1,27 @@ | |||||
#include "test_scaffold.cpp" | |||||
struct meta_test : public test_scaffold { | |||||
meta_test() { | |||||
name = __FILE__ ":1"; | |||||
} | |||||
virtual int run() { | |||||
return 0; | |||||
} | |||||
}; | |||||
struct meta_test2 : public test_scaffold { | |||||
meta_test2() { | |||||
name = __FILE__ ":2"; | |||||
} | |||||
class carrot{}; | |||||
virtual int run() { | |||||
// throw carrot{}; | |||||
return 0; | |||||
} | |||||
}; | |||||
append_test dummy_r3436r43(new meta_test{}); | |||||
append_test dummy_dfh486df(new meta_test2{}); |
@ -0,0 +1,18 @@ | |||||
#pragma once | |||||
#include <string> | |||||
#include <vector> | |||||
#include <memory> | |||||
struct test_scaffold{ | |||||
std::string name; | |||||
virtual int run() = 0; | |||||
virtual ~test_scaffold() = default; | |||||
}; | |||||
std::vector<std::unique_ptr<test_scaffold>> tests; | |||||
struct append_test { | |||||
append_test(test_scaffold* ptr) { | |||||
tests.emplace_back(ptr); | |||||
} | |||||
}; |