1 #include "dbus_environment.hpp"
2 #include "utils/detached_timer.hpp"
3 
4 #include <gmock/gmock.h>
5 
6 namespace utils
7 {
8 
9 using namespace testing;
10 using namespace std::chrono_literals;
11 
12 class TestDetachedTimer : public Test
13 {
14   public:
15     uint32_t value = 0;
16 };
17 
18 TEST_F(TestDetachedTimer, executesLambdaAfterTimeout)
19 {
20     auto setPromise = DbusEnvironment::setPromise("timer");
21 
22     makeDetachedTimer(DbusEnvironment::getIoc(), 100ms, [this, &setPromise] {
23         ++value;
24         setPromise();
25     });
26 
27     auto elapsed = DbusEnvironment::measureTime(
28         [] { DbusEnvironment::waitForFuture("timer"); });
29 
30     EXPECT_THAT(elapsed, AllOf(Ge(100ms), Lt(200ms)));
31     EXPECT_THAT(value, Eq(1u));
32 }
33 
34 } // namespace utils
35