#include #include "benchmark/benchmark.h" #include "gtest/gtest.h" namespace { class TestProfilerManager : public benchmark::ProfilerManager { public: void AfterSetupStart() override { ++start_called; } void BeforeTeardownStop() override { ++stop_called; } int start_called = 0; int stop_called = 0; }; void BM_empty(benchmark::State& state) { for (auto _ : state) { auto iterations = state.iterations(); benchmark::DoNotOptimize(iterations); } } BENCHMARK(BM_empty); TEST(ProfilerManager, ReregisterManager) { #if GTEST_HAS_DEATH_TEST // Tests only runnable in debug mode (when BM_CHECK is enabled). #ifndef NDEBUG #ifndef TEST_BENCHMARK_LIBRARY_HAS_NO_ASSERTIONS ASSERT_DEATH_IF_SUPPORTED( { std::unique_ptr pm(new TestProfilerManager()); benchmark::RegisterProfilerManager(pm.get()); benchmark::RegisterProfilerManager(pm.get()); }, "RegisterProfilerManager"); #endif #endif #endif } } // namespace