1*2cd25e64SAlexander Hansen #include "suite.hpp" 2*2cd25e64SAlexander Hansen 3*2cd25e64SAlexander Hansen #include <sdbusplus/timer.hpp> 4*2cd25e64SAlexander Hansen 5*2cd25e64SAlexander Hansen #include <chrono> 6*2cd25e64SAlexander Hansen 7*2cd25e64SAlexander Hansen #include <gtest/gtest.h> 8*2cd25e64SAlexander Hansen 9*2cd25e64SAlexander Hansen /** @brief Makes sure that optional callback is called */ TEST_F(TimerTestCallBack,optionalFuncCallBackDone)10*2cd25e64SAlexander HansenTEST_F(TimerTestCallBack, optionalFuncCallBackDone) 11*2cd25e64SAlexander Hansen { 12*2cd25e64SAlexander Hansen using namespace std::chrono; 13*2cd25e64SAlexander Hansen 14*2cd25e64SAlexander Hansen auto time = duration_cast<microseconds>(seconds(2)); 15*2cd25e64SAlexander Hansen EXPECT_GE(timer->start(time), 0); 16*2cd25e64SAlexander Hansen 17*2cd25e64SAlexander Hansen // Waiting 2 seconds is enough here since we have 18*2cd25e64SAlexander Hansen // already spent some usec now 19*2cd25e64SAlexander Hansen int count = 0; 20*2cd25e64SAlexander Hansen while (count < 2 && !timer->isExpired()) 21*2cd25e64SAlexander Hansen { 22*2cd25e64SAlexander Hansen // Returns -0- on timeout and positive number on dispatch 23*2cd25e64SAlexander Hansen auto sleepTime = duration_cast<microseconds>(seconds(1)); 24*2cd25e64SAlexander Hansen if (!sd_event_run(events, sleepTime.count())) 25*2cd25e64SAlexander Hansen { 26*2cd25e64SAlexander Hansen count++; 27*2cd25e64SAlexander Hansen } 28*2cd25e64SAlexander Hansen } 29*2cd25e64SAlexander Hansen EXPECT_EQ(true, timer->isExpired()); 30*2cd25e64SAlexander Hansen EXPECT_EQ(true, callBackDone); 31*2cd25e64SAlexander Hansen EXPECT_EQ(1, count); 32*2cd25e64SAlexander Hansen } 33