| // Copyright 2017 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef SRC_TESTS_MICROBENCHMARKS_TEST_RUNNER_H_ | |
| #define SRC_TESTS_MICROBENCHMARKS_TEST_RUNNER_H_ | |
| #include <perftest/perftest.h> | |
| namespace fbenchmark { | |
| // Register a benchmark that is specified by a class. | |
| // | |
| // Any class may be used as long as it provides a Run() method that runs an | |
| // iteration of the test. | |
| template <class TestClass, typename... Args> | |
| void RegisterTest(const char* test_name, Args... args) { | |
| perftest::RegisterTest(test_name, [=](perftest::RepeatState* state) { | |
| TestClass test(args...); | |
| while (state->KeepRunning()) { | |
| test.Run(); | |
| } | |
| return true; | |
| }); | |
| } | |
| } // namespace fbenchmark | |
| #endif // SRC_TESTS_MICROBENCHMARKS_TEST_RUNNER_H_ |