Apply UseManualTime to BM_bytes_per_second and BM_items_per_second (#2320)
diff --git a/test/reporter_output_test.cc b/test/reporter_output_test.cc
index 26d87de..2ad2e37 100644
--- a/test/reporter_output_test.cc
+++ b/test/reporter_output_test.cc
@@ -97,34 +97,42 @@
 // ------------------------ Testing Bytes per Second Output ---------------- //
 // ========================================================================= //
 
+constexpr double kIterationTime = 150e-9;
+
 void BM_bytes_per_second(benchmark::State& state) {
   for (auto _ : state) {
-    // This test requires a non-zero CPU time to avoid divide-by-zero
-    auto iterations = static_cast<double>(state.iterations()) *
-                      static_cast<double>(state.iterations());
-    benchmark::DoNotOptimize(iterations);
+    state.SetIterationTime(kIterationTime);
   }
   state.SetBytesProcessed(1);
 }
-BENCHMARK(BM_bytes_per_second);
+BENCHMARK(BM_bytes_per_second)->UseManualTime();
 
-ADD_CASES(TC_ConsoleOut, {{"^BM_bytes_per_second %console_report "
+ADD_CASES(TC_ConsoleOut, {{"^BM_bytes_per_second/manual_time %console_report "
                            "bytes_per_second=%float[kM]{0,1}/s$"}});
-ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_bytes_per_second\",$"},
-                       {"\"family_index\": 1,$", MR_Next},
-                       {"\"per_family_instance_index\": 0,$", MR_Next},
-                       {"\"run_name\": \"BM_bytes_per_second\",$", MR_Next},
-                       {"\"run_type\": \"iteration\",$", MR_Next},
-                       {"\"repetitions\": 1,$", MR_Next},
-                       {"\"repetition_index\": 0,$", MR_Next},
-                       {"\"threads\": 1,$", MR_Next},
-                       {"\"iterations\": %int,$", MR_Next},
-                       {"\"real_time\": %float,$", MR_Next},
-                       {"\"cpu_time\": %float,$", MR_Next},
-                       {"\"time_unit\": \"ns\",$", MR_Next},
-                       {"\"bytes_per_second\": %float$", MR_Next},
-                       {"}", MR_Next}});
-ADD_CASES(TC_CSVOut, {{"^\"BM_bytes_per_second\",%csv_bytes_report$"}});
+ADD_CASES(TC_JSONOut,
+          {{"\"name\": \"BM_bytes_per_second/manual_time\",$"},
+           {"\"family_index\": 1,$", MR_Next},
+           {"\"per_family_instance_index\": 0,$", MR_Next},
+           {"\"run_name\": \"BM_bytes_per_second/manual_time\",$", MR_Next},
+           {"\"run_type\": \"iteration\",$", MR_Next},
+           {"\"repetitions\": 1,$", MR_Next},
+           {"\"repetition_index\": 0,$", MR_Next},
+           {"\"threads\": 1,$", MR_Next},
+           {"\"iterations\": %int,$", MR_Next},
+           {"\"real_time\": %float,$", MR_Next},
+           {"\"cpu_time\": %float,$", MR_Next},
+           {"\"time_unit\": \"ns\",$", MR_Next},
+           {"\"bytes_per_second\": %float$", MR_Next},
+           {"}", MR_Next}});
+ADD_CASES(TC_CSVOut,
+          {{"^\"BM_bytes_per_second/manual_time\",%csv_bytes_report$"}});
+
+void BM_bytes_per_second_results(Results const& e) {
+  CHECK_FLOAT_RESULT_VALUE(e, "bytes_per_second", EQ,
+                           1.0 / (e.NumIterations() * kIterationTime), 0.001);
+}
+CHECK_BENCHMARK_RESULTS("BM_bytes_per_second/manual_time",
+                        &BM_bytes_per_second_results);
 
 // ========================================================================= //
 // ------------------------ Testing Items per Second Output ---------------- //
@@ -132,32 +140,38 @@
 
 void BM_items_per_second(benchmark::State& state) {
   for (auto _ : state) {
-    // This test requires a non-zero CPU time to avoid divide-by-zero
-    auto iterations = static_cast<double>(state.iterations()) *
-                      static_cast<double>(state.iterations());
-    benchmark::DoNotOptimize(iterations);
+    state.SetIterationTime(kIterationTime);
   }
   state.SetItemsProcessed(1);
 }
-BENCHMARK(BM_items_per_second);
+BENCHMARK(BM_items_per_second)->UseManualTime();
 
-ADD_CASES(TC_ConsoleOut, {{"^BM_items_per_second %console_report "
+ADD_CASES(TC_ConsoleOut, {{"^BM_items_per_second/manual_time %console_report "
                            "items_per_second=%float[kM]{0,1}/s$"}});
-ADD_CASES(TC_JSONOut, {{"\"name\": \"BM_items_per_second\",$"},
-                       {"\"family_index\": 2,$", MR_Next},
-                       {"\"per_family_instance_index\": 0,$", MR_Next},
-                       {"\"run_name\": \"BM_items_per_second\",$", MR_Next},
-                       {"\"run_type\": \"iteration\",$", MR_Next},
-                       {"\"repetitions\": 1,$", MR_Next},
-                       {"\"repetition_index\": 0,$", MR_Next},
-                       {"\"threads\": 1,$", MR_Next},
-                       {"\"iterations\": %int,$", MR_Next},
-                       {"\"real_time\": %float,$", MR_Next},
-                       {"\"cpu_time\": %float,$", MR_Next},
-                       {"\"time_unit\": \"ns\",$", MR_Next},
-                       {"\"items_per_second\": %float$", MR_Next},
-                       {"}", MR_Next}});
-ADD_CASES(TC_CSVOut, {{"^\"BM_items_per_second\",%csv_items_report$"}});
+ADD_CASES(TC_JSONOut,
+          {{"\"name\": \"BM_items_per_second/manual_time\",$"},
+           {"\"family_index\": 2,$", MR_Next},
+           {"\"per_family_instance_index\": 0,$", MR_Next},
+           {"\"run_name\": \"BM_items_per_second/manual_time\",$", MR_Next},
+           {"\"run_type\": \"iteration\",$", MR_Next},
+           {"\"repetitions\": 1,$", MR_Next},
+           {"\"repetition_index\": 0,$", MR_Next},
+           {"\"threads\": 1,$", MR_Next},
+           {"\"iterations\": %int,$", MR_Next},
+           {"\"real_time\": %float,$", MR_Next},
+           {"\"cpu_time\": %float,$", MR_Next},
+           {"\"time_unit\": \"ns\",$", MR_Next},
+           {"\"items_per_second\": %float$", MR_Next},
+           {"}", MR_Next}});
+ADD_CASES(TC_CSVOut,
+          {{"^\"BM_items_per_second/manual_time\",%csv_items_report$"}});
+
+void BM_items_per_second_results(Results const& e) {
+  CHECK_FLOAT_RESULT_VALUE(e, "items_per_second", EQ,
+                           1.0 / (e.NumIterations() * kIterationTime), 0.001);
+}
+CHECK_BENCHMARK_RESULTS("BM_items_per_second/manual_time",
+                        &BM_items_per_second_results);
 
 // ========================================================================= //
 // ------------------------ Testing Label Output --------------------------- //
@@ -830,7 +844,7 @@
 };
 void BM_UserStats(benchmark::State& state) {
   for (auto _ : state) {
-    state.SetIterationTime(150 / 10e8);
+    state.SetIterationTime(kIterationTime);
   }
 }
 // clang-format off
@@ -961,7 +975,7 @@
 };
 void BM_UserPercentStats(benchmark::State& state) {
   for (auto _ : state) {
-    state.SetIterationTime(150 / 10e8);
+    state.SetIterationTime(kIterationTime);
   }
 }
 // clang-format off