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