Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(224)

Side by Side Diff: third_party/google_benchmark/test/diagnostics_test.cc

Issue 2865663003: Adding Google benchmarking library. (Closed)
Patch Set: Sketch. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Testing:
2 // State::PauseTiming()
3 // State::ResumeTiming()
4 // Test that CHECK's within these function diagnose when they are called
5 // outside of the KeepRunning() loop.
6 //
7 // NOTE: Users should NOT include or use src/check.h. This is only done in
8 // order to test library internals.
9
10 #include <cstdlib>
11 #include <stdexcept>
12
13 #include "../src/check.h"
14 #include "benchmark/benchmark_api.h"
15
16 #if defined(__GNUC__) && !defined(__EXCEPTIONS)
17 #define TEST_HAS_NO_EXCEPTIONS
18 #endif
19
20 void TestHandler() {
21 #ifndef TEST_HAS_NO_EXCEPTIONS
22 throw std::logic_error("");
23 #else
24 std::abort();
25 #endif
26 }
27
28 void try_invalid_pause_resume(benchmark::State& state) {
29 #if !defined(TEST_BENCHMARK_LIBRARY_HAS_NO_ASSERTIONS) && !defined(TEST_HAS_NO_E XCEPTIONS)
30 try {
31 state.PauseTiming();
32 std::abort();
33 } catch (std::logic_error const&) {
34 }
35 try {
36 state.ResumeTiming();
37 std::abort();
38 } catch (std::logic_error const&) {
39 }
40 #else
41 (void)state; // avoid unused warning
42 #endif
43 }
44
45 void BM_diagnostic_test(benchmark::State& state) {
46 static bool called_once = false;
47
48 if (called_once == false) try_invalid_pause_resume(state);
49
50 while (state.KeepRunning()) {
51 benchmark::DoNotOptimize(state.iterations());
52 }
53
54 if (called_once == false) try_invalid_pause_resume(state);
55
56 called_once = true;
57 }
58 BENCHMARK(BM_diagnostic_test);
59
60 int main(int argc, char* argv[]) {
61 benchmark::internal::GetAbortHandler() = &TestHandler;
62 benchmark::Initialize(&argc, argv);
63 benchmark::RunSpecifiedBenchmarks();
64 }
OLDNEW
« no previous file with comments | « third_party/google_benchmark/test/cxx03_test.cc ('k') | third_party/google_benchmark/test/donotoptimize_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698