Index: third_party/google_benchmark/test/fixture_test.cc |
diff --git a/third_party/google_benchmark/test/fixture_test.cc b/third_party/google_benchmark/test/fixture_test.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bbc2f9579023c8889833eb063ffab739a8e84eb9 |
--- /dev/null |
+++ b/third_party/google_benchmark/test/fixture_test.cc |
@@ -0,0 +1,49 @@ |
+ |
+#include "benchmark/benchmark.h" |
+ |
+#include <cassert> |
+#include <memory> |
+ |
+class MyFixture : public ::benchmark::Fixture { |
+ public: |
+ void SetUp(const ::benchmark::State& state) { |
+ if (state.thread_index == 0) { |
+ assert(data.get() == nullptr); |
+ data.reset(new int(42)); |
+ } |
+ } |
+ |
+ void TearDown(const ::benchmark::State& state) { |
+ if (state.thread_index == 0) { |
+ assert(data.get() != nullptr); |
+ data.reset(); |
+ } |
+ } |
+ |
+ ~MyFixture() { assert(data == nullptr); } |
+ |
+ std::unique_ptr<int> data; |
+}; |
+ |
+BENCHMARK_F(MyFixture, Foo)(benchmark::State &st) { |
+ assert(data.get() != nullptr); |
+ assert(*data == 42); |
+ while (st.KeepRunning()) { |
+ } |
+} |
+ |
+BENCHMARK_DEFINE_F(MyFixture, Bar)(benchmark::State& st) { |
+ if (st.thread_index == 0) { |
+ assert(data.get() != nullptr); |
+ assert(*data == 42); |
+ } |
+ while (st.KeepRunning()) { |
+ assert(data.get() != nullptr); |
+ assert(*data == 42); |
+ } |
+ st.SetItemsProcessed(st.range(0)); |
+} |
+BENCHMARK_REGISTER_F(MyFixture, Bar)->Arg(42); |
+BENCHMARK_REGISTER_F(MyFixture, Bar)->Arg(42)->ThreadPerCpu(); |
+ |
+BENCHMARK_MAIN() |