blob: e77f14021e5589ba8e5a742e6172f8dfa3bbfe0b [file] [log] [blame]
Austin Schuhcc6070c2020-10-10 20:25:56 -07001#include "aos/realtime.h"
2
3#include "gtest/gtest.h"
4
5namespace aos {
6namespace testing {
7
8// Tests that ScopedRealtime handles the simple case.
9TEST(RealtimeTest, ScopedRealtime) {
10 CheckNotRealtime();
11 {
12 ScopedRealtime rt;
13 CheckRealtime();
14 }
15 CheckNotRealtime();
16}
17
18// Tests that ScopedRealtime handles nesting.
19TEST(RealtimeTest, DoubleScopedRealtime) {
20 CheckNotRealtime();
21 {
22 ScopedRealtime rt;
23 CheckRealtime();
24 {
25 ScopedRealtime rt2;
26 CheckRealtime();
27 }
28 CheckRealtime();
29 }
30 CheckNotRealtime();
31}
32
33// Tests that ScopedRealtime handles nesting with ScopedNotRealtime.
34TEST(RealtimeTest, ScopedNotRealtime) {
35 CheckNotRealtime();
36 {
37 ScopedRealtime rt;
38 CheckRealtime();
39 {
40 ScopedNotRealtime nrt;
41 CheckNotRealtime();
42 }
43 CheckRealtime();
44 }
45 CheckNotRealtime();
46}
47
48// Tests that ScopedRealtimeRestorer works both when starting RT and nonrt.
49TEST(RealtimeTest, ScopedRealtimeRestorer) {
50 CheckNotRealtime();
51 {
52 ScopedRealtime rt;
53 CheckRealtime();
54 {
55 ScopedRealtimeRestorer restore;
56 CheckRealtime();
57
58 MarkRealtime(false);
59 CheckNotRealtime();
60 }
61 CheckRealtime();
62 }
63 CheckNotRealtime();
64
65 {
66 ScopedRealtimeRestorer restore;
67 CheckNotRealtime();
68
69 MarkRealtime(true);
70 CheckRealtime();
71 }
72 CheckNotRealtime();
73}
74
75} // namespace testing
76} // namespace aos