summaryrefslogtreecommitdiff
path: root/third-party/benchmark/test/fixture_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third-party/benchmark/test/fixture_test.cc')
-rw-r--r--third-party/benchmark/test/fixture_test.cc51
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();