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