|
|
- #pragma once
-
- #include <chrono>
- #include <memory>
- #include <string>
- #include <vector>
-
- #ifndef NO_BENCH
- #define NO_BENCH 1
- #endif
-
- constexpr bool do_bench = 1 - NO_BENCH;
-
- template<typename fn>
- std::chrono::microseconds time_operation(fn op) {
- auto start = std::chrono::high_resolution_clock::now();
- op();
- auto time = std::chrono::high_resolution_clock::now() - start;
- return std::chrono::duration_cast<std::chrono::microseconds>(time);
- }
-
- struct test_scaffold{
- std::string name;
- virtual int run() = 0;
- virtual ~test_scaffold() = default;
- };
-
- extern std::vector<std::unique_ptr<test_scaffold>> tests;
-
- struct append_test {
- append_test(test_scaffold* ptr) {
- tests.emplace_back(ptr);
- }
- };
|