| #undef NDEBUG | |
| #include <cassert> | |
| #include <cmath> | |
| #include <cstdlib> | |
| #include "benchmark/benchmark_api.h" | |
| #include "benchmark/registration.h" | |
| #include "benchmark/state.h" | |
| #include "output_test.h" | |
| namespace { | |
| void BM_ostream(benchmark::State& state) { | |
| #if !defined(__GLIBCXX__) || defined(__GLIBC__) || defined(__DragonFly__) | |
| // libstdc++ only supports locale manipulations on GNU and | |
| // DragonflyBSD platforms at the time of writing, don't run the test | |
| // on other platforms when using libstdc++. | |
| std::locale::global(std::locale("en_US.UTF-8")); | |
| #endif | |
| while (state.KeepRunning()) { | |
| state.SetIterationTime(1e-6); | |
| } | |
| } | |
| BENCHMARK(BM_ostream)->UseManualTime()->Iterations(1000000); | |
| ADD_CASES(TC_ConsoleOut, {{"^BM_ostream/iterations:1000000/manual_time" | |
| " %console_report$"}}); | |
| ADD_CASES(TC_JSONOut, | |
| {{"\"name\": \"BM_ostream/iterations:1000000/manual_time\",$"}, | |
| {"\"family_index\": 0,$", MR_Next}, | |
| {"\"per_family_instance_index\": 0,$", MR_Next}, | |
| {"\"run_name\": " | |
| "\"BM_ostream/iterations:1000000/manual_time\",$", | |
| MR_Next}, | |
| {"\"run_type\": \"iteration\",$", MR_Next}, | |
| {"\"repetitions\": 1,$", MR_Next}, | |
| {"\"repetition_index\": 0,$", MR_Next}, | |
| {"\"threads\": 1,$", MR_Next}, | |
| {"\"iterations\": 1000000,$", MR_Next}, | |
| {"\"real_time\": %float,$", MR_Next}, | |
| {"\"cpu_time\": %float,$", MR_Next}, | |
| {"\"time_unit\": \"ns\"$", MR_Next}, | |
| {"}", MR_Next}}); | |
| ADD_CASES(TC_CSVOut, {{"^\"BM_ostream/iterations:1000000/" | |
| "manual_time\",1000000,%float,%float,ns,,,,,$"}}); | |
| } // end namespace | |
| int main(int argc, char* argv[]) { | |
| benchmark::MaybeReenterWithoutASLR(argc, argv); | |
| RunOutputTests(argc, argv); | |
| } |