| Index: third_party/google_benchmark/test/filter_test.cc
|
| diff --git a/third_party/google_benchmark/test/filter_test.cc b/third_party/google_benchmark/test/filter_test.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3a205295f0919d3f95dadaac9aa0769e02c4ef99
|
| --- /dev/null
|
| +++ b/third_party/google_benchmark/test/filter_test.cc
|
| @@ -0,0 +1,104 @@
|
| +#include "benchmark/benchmark.h"
|
| +
|
| +#include <cassert>
|
| +#include <cmath>
|
| +#include <cstdint>
|
| +#include <cstdlib>
|
| +
|
| +#include <iostream>
|
| +#include <limits>
|
| +#include <sstream>
|
| +#include <string>
|
| +
|
| +namespace {
|
| +
|
| +class TestReporter : public benchmark::ConsoleReporter {
|
| + public:
|
| + virtual bool ReportContext(const Context& context) {
|
| + return ConsoleReporter::ReportContext(context);
|
| + };
|
| +
|
| + virtual void ReportRuns(const std::vector<Run>& report) {
|
| + ++count_;
|
| + ConsoleReporter::ReportRuns(report);
|
| + };
|
| +
|
| + TestReporter() : count_(0) {}
|
| +
|
| + virtual ~TestReporter() {}
|
| +
|
| + size_t GetCount() const { return count_; }
|
| +
|
| + private:
|
| + mutable size_t count_;
|
| +};
|
| +
|
| +} // end namespace
|
| +
|
| +static void NoPrefix(benchmark::State& state) {
|
| + while (state.KeepRunning()) {
|
| + }
|
| +}
|
| +BENCHMARK(NoPrefix);
|
| +
|
| +static void BM_Foo(benchmark::State& state) {
|
| + while (state.KeepRunning()) {
|
| + }
|
| +}
|
| +BENCHMARK(BM_Foo);
|
| +
|
| +static void BM_Bar(benchmark::State& state) {
|
| + while (state.KeepRunning()) {
|
| + }
|
| +}
|
| +BENCHMARK(BM_Bar);
|
| +
|
| +static void BM_FooBar(benchmark::State& state) {
|
| + while (state.KeepRunning()) {
|
| + }
|
| +}
|
| +BENCHMARK(BM_FooBar);
|
| +
|
| +static void BM_FooBa(benchmark::State& state) {
|
| + while (state.KeepRunning()) {
|
| + }
|
| +}
|
| +BENCHMARK(BM_FooBa);
|
| +
|
| +int main(int argc, char **argv) {
|
| + bool list_only = false;
|
| + for (int i = 0; i < argc; ++i)
|
| + list_only |= std::string(argv[i]).find("--benchmark_list_tests") !=
|
| + std::string::npos;
|
| +
|
| + benchmark::Initialize(&argc, argv);
|
| +
|
| + TestReporter test_reporter;
|
| + const size_t returned_count =
|
| + benchmark::RunSpecifiedBenchmarks(&test_reporter);
|
| +
|
| + if (argc == 2) {
|
| + // Make sure we ran all of the tests
|
| + std::stringstream ss(argv[1]);
|
| + size_t expected_return;
|
| + ss >> expected_return;
|
| +
|
| + if (returned_count != expected_return) {
|
| + std::cerr << "ERROR: Expected " << expected_return
|
| + << " tests to match the filter but returned_count = "
|
| + << returned_count << std::endl;
|
| + return -1;
|
| + }
|
| +
|
| + const size_t expected_reports = list_only ? 0 : expected_return;
|
| + const size_t reports_count = test_reporter.GetCount();
|
| + if (reports_count != expected_reports) {
|
| + std::cerr << "ERROR: Expected " << expected_reports
|
| + << " tests to be run but reported_count = " << reports_count
|
| + << std::endl;
|
| + return -1;
|
| + }
|
| + }
|
| +
|
| + return 0;
|
| +}
|
|
|