diff options
Diffstat (limited to 'third-party/benchmark/test/fixture_test.cc')
-rw-r--r-- | third-party/benchmark/test/fixture_test.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/third-party/benchmark/test/fixture_test.cc b/third-party/benchmark/test/fixture_test.cc new file mode 100644 index 000000000000..eba0a42d9cb0 --- /dev/null +++ b/third-party/benchmark/test/fixture_test.cc @@ -0,0 +1,51 @@ + +#include "benchmark/benchmark.h" + +#include <cassert> +#include <memory> + +#define FIXTURE_BECHMARK_NAME MyFixture + +class FIXTURE_BECHMARK_NAME : public ::benchmark::Fixture { + public: + void SetUp(const ::benchmark::State& state) BENCHMARK_OVERRIDE { + if (state.thread_index == 0) { + assert(data.get() == nullptr); + data.reset(new int(42)); + } + } + + void TearDown(const ::benchmark::State& state) BENCHMARK_OVERRIDE { + if (state.thread_index == 0) { + assert(data.get() != nullptr); + data.reset(); + } + } + + ~FIXTURE_BECHMARK_NAME() { assert(data == nullptr); } + + std::unique_ptr<int> data; +}; + +BENCHMARK_F(FIXTURE_BECHMARK_NAME, Foo)(benchmark::State &st) { + assert(data.get() != nullptr); + assert(*data == 42); + for (auto _ : st) { + } +} + +BENCHMARK_DEFINE_F(FIXTURE_BECHMARK_NAME, Bar)(benchmark::State& st) { + if (st.thread_index == 0) { + assert(data.get() != nullptr); + assert(*data == 42); + } + for (auto _ : st) { + assert(data.get() != nullptr); + assert(*data == 42); + } + st.SetItemsProcessed(st.range(0)); +} +BENCHMARK_REGISTER_F(FIXTURE_BECHMARK_NAME, Bar)->Arg(42); +BENCHMARK_REGISTER_F(FIXTURE_BECHMARK_NAME, Bar)->Arg(42)->ThreadPerCpu(); + +BENCHMARK_MAIN(); |