| #include "aos/realtime.h" |
| |
| #include "gtest/gtest.h" |
| |
| namespace aos { |
| namespace testing { |
| |
| // Tests that ScopedRealtime handles the simple case. |
| TEST(RealtimeTest, ScopedRealtime) { |
| CheckNotRealtime(); |
| { |
| ScopedRealtime rt; |
| CheckRealtime(); |
| } |
| CheckNotRealtime(); |
| } |
| |
| // Tests that ScopedRealtime handles nesting. |
| TEST(RealtimeTest, DoubleScopedRealtime) { |
| CheckNotRealtime(); |
| { |
| ScopedRealtime rt; |
| CheckRealtime(); |
| { |
| ScopedRealtime rt2; |
| CheckRealtime(); |
| } |
| CheckRealtime(); |
| } |
| CheckNotRealtime(); |
| } |
| |
| // Tests that ScopedRealtime handles nesting with ScopedNotRealtime. |
| TEST(RealtimeTest, ScopedNotRealtime) { |
| CheckNotRealtime(); |
| { |
| ScopedRealtime rt; |
| CheckRealtime(); |
| { |
| ScopedNotRealtime nrt; |
| CheckNotRealtime(); |
| } |
| CheckRealtime(); |
| } |
| CheckNotRealtime(); |
| } |
| |
| // Tests that ScopedRealtimeRestorer works both when starting RT and nonrt. |
| TEST(RealtimeTest, ScopedRealtimeRestorer) { |
| CheckNotRealtime(); |
| { |
| ScopedRealtime rt; |
| CheckRealtime(); |
| { |
| ScopedRealtimeRestorer restore; |
| CheckRealtime(); |
| |
| MarkRealtime(false); |
| CheckNotRealtime(); |
| } |
| CheckRealtime(); |
| } |
| CheckNotRealtime(); |
| |
| { |
| ScopedRealtimeRestorer restore; |
| CheckNotRealtime(); |
| |
| MarkRealtime(true); |
| CheckRealtime(); |
| } |
| CheckNotRealtime(); |
| } |
| |
| } // namespace testing |
| } // namespace aos |