xref: /aosp_15_r20/external/google-benchmark/test/display_aggregates_only_test.cc (revision dbb99499c3810fa1611fa2242a2fc446be01a57c)
1*dbb99499SAndroid Build Coastguard Worker 
2*dbb99499SAndroid Build Coastguard Worker #undef NDEBUG
3*dbb99499SAndroid Build Coastguard Worker #include <cstdio>
4*dbb99499SAndroid Build Coastguard Worker #include <string>
5*dbb99499SAndroid Build Coastguard Worker 
6*dbb99499SAndroid Build Coastguard Worker #include "benchmark/benchmark.h"
7*dbb99499SAndroid Build Coastguard Worker #include "output_test.h"
8*dbb99499SAndroid Build Coastguard Worker 
9*dbb99499SAndroid Build Coastguard Worker // Ok this test is super ugly. We want to check what happens with the file
10*dbb99499SAndroid Build Coastguard Worker // reporter in the presence of DisplayAggregatesOnly().
11*dbb99499SAndroid Build Coastguard Worker // We do not care about console output, the normal tests check that already.
12*dbb99499SAndroid Build Coastguard Worker 
BM_SummaryRepeat(benchmark::State & state)13*dbb99499SAndroid Build Coastguard Worker void BM_SummaryRepeat(benchmark::State& state) {
14*dbb99499SAndroid Build Coastguard Worker   for (auto _ : state) {
15*dbb99499SAndroid Build Coastguard Worker   }
16*dbb99499SAndroid Build Coastguard Worker }
17*dbb99499SAndroid Build Coastguard Worker BENCHMARK(BM_SummaryRepeat)->Repetitions(3)->DisplayAggregatesOnly();
18*dbb99499SAndroid Build Coastguard Worker 
main(int argc,char * argv[])19*dbb99499SAndroid Build Coastguard Worker int main(int argc, char* argv[]) {
20*dbb99499SAndroid Build Coastguard Worker   const std::string output = GetFileReporterOutput(argc, argv);
21*dbb99499SAndroid Build Coastguard Worker 
22*dbb99499SAndroid Build Coastguard Worker   if (SubstrCnt(output, "\"name\": \"BM_SummaryRepeat/repeats:3") != 7 ||
23*dbb99499SAndroid Build Coastguard Worker       SubstrCnt(output, "\"name\": \"BM_SummaryRepeat/repeats:3\"") != 3 ||
24*dbb99499SAndroid Build Coastguard Worker       SubstrCnt(output, "\"name\": \"BM_SummaryRepeat/repeats:3_mean\"") != 1 ||
25*dbb99499SAndroid Build Coastguard Worker       SubstrCnt(output, "\"name\": \"BM_SummaryRepeat/repeats:3_median\"") !=
26*dbb99499SAndroid Build Coastguard Worker           1 ||
27*dbb99499SAndroid Build Coastguard Worker       SubstrCnt(output, "\"name\": \"BM_SummaryRepeat/repeats:3_stddev\"") !=
28*dbb99499SAndroid Build Coastguard Worker           1 ||
29*dbb99499SAndroid Build Coastguard Worker       SubstrCnt(output, "\"name\": \"BM_SummaryRepeat/repeats:3_cv\"") != 1) {
30*dbb99499SAndroid Build Coastguard Worker     std::cout << "Precondition mismatch. Expected to only find 8 "
31*dbb99499SAndroid Build Coastguard Worker                  "occurrences of \"BM_SummaryRepeat/repeats:3\" substring:\n"
32*dbb99499SAndroid Build Coastguard Worker                  "\"name\": \"BM_SummaryRepeat/repeats:3\", "
33*dbb99499SAndroid Build Coastguard Worker                  "\"name\": \"BM_SummaryRepeat/repeats:3\", "
34*dbb99499SAndroid Build Coastguard Worker                  "\"name\": \"BM_SummaryRepeat/repeats:3\", "
35*dbb99499SAndroid Build Coastguard Worker                  "\"name\": \"BM_SummaryRepeat/repeats:3_mean\", "
36*dbb99499SAndroid Build Coastguard Worker                  "\"name\": \"BM_SummaryRepeat/repeats:3_median\", "
37*dbb99499SAndroid Build Coastguard Worker                  "\"name\": \"BM_SummaryRepeat/repeats:3_stddev\", "
38*dbb99499SAndroid Build Coastguard Worker                  "\"name\": \"BM_SummaryRepeat/repeats:3_cv\"\nThe entire "
39*dbb99499SAndroid Build Coastguard Worker                  "output:\n";
40*dbb99499SAndroid Build Coastguard Worker     std::cout << output;
41*dbb99499SAndroid Build Coastguard Worker     return 1;
42*dbb99499SAndroid Build Coastguard Worker   }
43*dbb99499SAndroid Build Coastguard Worker 
44*dbb99499SAndroid Build Coastguard Worker   return 0;
45*dbb99499SAndroid Build Coastguard Worker }
46