diff options
Diffstat (limited to 'services/vibratorservice/test/test_utils.h')
-rw-r--r-- | services/vibratorservice/test/test_utils.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/services/vibratorservice/test/test_utils.h b/services/vibratorservice/test/test_utils.h index 1933a118ef..c08cfc6bfa 100644 --- a/services/vibratorservice/test/test_utils.h +++ b/services/vibratorservice/test/test_utils.h @@ -85,6 +85,34 @@ private: ~TestFactory() = delete; }; +class TestCounter { +public: + TestCounter(int32_t init = 0) : mMutex(), mCondVar(), mCount(init) {} + + int32_t get() { + std::lock_guard<std::mutex> lock(mMutex); + return mCount; + } + + void increment() { + { + std::lock_guard<std::mutex> lock(mMutex); + mCount += 1; + } + mCondVar.notify_all(); + } + + void tryWaitUntilCountIsAtLeast(int32_t count, std::chrono::milliseconds timeout) { + std::unique_lock<std::mutex> lock(mMutex); + mCondVar.wait_for(lock, timeout, [&] { return mCount >= count; }); + } + +private: + std::mutex mMutex; + std::condition_variable mCondVar; + int32_t mCount GUARDED_BY(mMutex); +}; + // ------------------------------------------------------------------------------------------------- } // namespace vibrator |