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