xref: /aosp_15_r20/external/google-benchmark/test/spec_arg_verbosity_test.cc (revision dbb99499c3810fa1611fa2242a2fc446be01a57c)
1*dbb99499SAndroid Build Coastguard Worker #include <string.h>
2*dbb99499SAndroid Build Coastguard Worker 
3*dbb99499SAndroid Build Coastguard Worker #include <iostream>
4*dbb99499SAndroid Build Coastguard Worker 
5*dbb99499SAndroid Build Coastguard Worker #include "benchmark/benchmark.h"
6*dbb99499SAndroid Build Coastguard Worker 
7*dbb99499SAndroid Build Coastguard Worker // Tests that the user specified verbosity level can be get.
BM_Verbosity(benchmark::State & state)8*dbb99499SAndroid Build Coastguard Worker static void BM_Verbosity(benchmark::State& state) {
9*dbb99499SAndroid Build Coastguard Worker   for (auto _ : state) {
10*dbb99499SAndroid Build Coastguard Worker   }
11*dbb99499SAndroid Build Coastguard Worker }
12*dbb99499SAndroid Build Coastguard Worker BENCHMARK(BM_Verbosity);
13*dbb99499SAndroid Build Coastguard Worker 
main(int argc,char ** argv)14*dbb99499SAndroid Build Coastguard Worker int main(int argc, char** argv) {
15*dbb99499SAndroid Build Coastguard Worker   const int32_t flagv = 42;
16*dbb99499SAndroid Build Coastguard Worker 
17*dbb99499SAndroid Build Coastguard Worker   // Verify that argv specify --v=42.
18*dbb99499SAndroid Build Coastguard Worker   bool found = false;
19*dbb99499SAndroid Build Coastguard Worker   for (int i = 0; i < argc; ++i) {
20*dbb99499SAndroid Build Coastguard Worker     if (strcmp("--v=42", argv[i]) == 0) {
21*dbb99499SAndroid Build Coastguard Worker       found = true;
22*dbb99499SAndroid Build Coastguard Worker       break;
23*dbb99499SAndroid Build Coastguard Worker     }
24*dbb99499SAndroid Build Coastguard Worker   }
25*dbb99499SAndroid Build Coastguard Worker   if (!found) {
26*dbb99499SAndroid Build Coastguard Worker     std::cerr << "This test requires '--v=42' to be passed as a command-line "
27*dbb99499SAndroid Build Coastguard Worker               << "argument.\n";
28*dbb99499SAndroid Build Coastguard Worker     return 1;
29*dbb99499SAndroid Build Coastguard Worker   }
30*dbb99499SAndroid Build Coastguard Worker 
31*dbb99499SAndroid Build Coastguard Worker   benchmark::Initialize(&argc, argv);
32*dbb99499SAndroid Build Coastguard Worker 
33*dbb99499SAndroid Build Coastguard Worker   // Check that the current flag value is reported accurately via the
34*dbb99499SAndroid Build Coastguard Worker   // GetBenchmarkVerbosity() function.
35*dbb99499SAndroid Build Coastguard Worker   if (flagv != benchmark::GetBenchmarkVerbosity()) {
36*dbb99499SAndroid Build Coastguard Worker     std::cerr
37*dbb99499SAndroid Build Coastguard Worker         << "Seeing different value for flags. GetBenchmarkVerbosity() returns ["
38*dbb99499SAndroid Build Coastguard Worker         << benchmark::GetBenchmarkVerbosity() << "] expected flag=[" << flagv
39*dbb99499SAndroid Build Coastguard Worker         << "]\n";
40*dbb99499SAndroid Build Coastguard Worker     return 1;
41*dbb99499SAndroid Build Coastguard Worker   }
42*dbb99499SAndroid Build Coastguard Worker   return 0;
43*dbb99499SAndroid Build Coastguard Worker }
44