1*2cd25e64SAlexander Hansen #pragma once 2*2cd25e64SAlexander Hansen 3*2cd25e64SAlexander Hansen #include <sdbusplus/timer.hpp> 4*2cd25e64SAlexander Hansen 5*2cd25e64SAlexander Hansen #include <gtest/gtest.h> 6*2cd25e64SAlexander Hansen 7*2cd25e64SAlexander Hansen using sdbusplus::Timer; 8*2cd25e64SAlexander Hansen 9*2cd25e64SAlexander Hansen class TimerTest : public ::testing::Test 10*2cd25e64SAlexander Hansen { 11*2cd25e64SAlexander Hansen public: 12*2cd25e64SAlexander Hansen // systemd event handler 13*2cd25e64SAlexander Hansen sd_event* events = nullptr; 14*2cd25e64SAlexander Hansen 15*2cd25e64SAlexander Hansen // Need this so that events can be initialized. 16*2cd25e64SAlexander Hansen int rc; 17*2cd25e64SAlexander Hansen 18*2cd25e64SAlexander Hansen // Source of event 19*2cd25e64SAlexander Hansen sd_event_source* eventSource = nullptr; 20*2cd25e64SAlexander Hansen 21*2cd25e64SAlexander Hansen // Add a Timer Object 22*2cd25e64SAlexander Hansen Timer timer; 23*2cd25e64SAlexander Hansen 24*2cd25e64SAlexander Hansen // Gets called as part of each TEST_F construction TimerTest()25*2cd25e64SAlexander Hansen TimerTest() : rc(sd_event_default(&events)), timer(events) 26*2cd25e64SAlexander Hansen { 27*2cd25e64SAlexander Hansen // Check for successful creation of 28*2cd25e64SAlexander Hansen // event handler and timer object. 29*2cd25e64SAlexander Hansen EXPECT_GE(rc, 0); 30*2cd25e64SAlexander Hansen } 31*2cd25e64SAlexander Hansen 32*2cd25e64SAlexander Hansen // Gets called as part of each TEST_F destruction ~TimerTest()33*2cd25e64SAlexander Hansen ~TimerTest() override 34*2cd25e64SAlexander Hansen { 35*2cd25e64SAlexander Hansen events = sd_event_unref(events); 36*2cd25e64SAlexander Hansen } 37*2cd25e64SAlexander Hansen }; 38*2cd25e64SAlexander Hansen 39*2cd25e64SAlexander Hansen class TimerTestCallBack : public ::testing::Test 40*2cd25e64SAlexander Hansen { 41*2cd25e64SAlexander Hansen public: 42*2cd25e64SAlexander Hansen // systemd event handler 43*2cd25e64SAlexander Hansen sd_event* events; 44*2cd25e64SAlexander Hansen 45*2cd25e64SAlexander Hansen // Need this so that events can be initialized. 46*2cd25e64SAlexander Hansen int rc; 47*2cd25e64SAlexander Hansen 48*2cd25e64SAlexander Hansen // Source of event 49*2cd25e64SAlexander Hansen sd_event_source* eventSource = nullptr; 50*2cd25e64SAlexander Hansen 51*2cd25e64SAlexander Hansen // Add a Timer Object 52*2cd25e64SAlexander Hansen std::unique_ptr<Timer> timer = nullptr; 53*2cd25e64SAlexander Hansen 54*2cd25e64SAlexander Hansen // Indicates optional call back fun was called 55*2cd25e64SAlexander Hansen bool callBackDone = false; 56*2cd25e64SAlexander Hansen callBack()57*2cd25e64SAlexander Hansen void callBack() 58*2cd25e64SAlexander Hansen { 59*2cd25e64SAlexander Hansen callBackDone = true; 60*2cd25e64SAlexander Hansen } 61*2cd25e64SAlexander Hansen 62*2cd25e64SAlexander Hansen // Gets called as part of each TEST_F construction TimerTestCallBack()63*2cd25e64SAlexander Hansen TimerTestCallBack() : rc(sd_event_default(&events)) 64*2cd25e64SAlexander Hansen 65*2cd25e64SAlexander Hansen { 66*2cd25e64SAlexander Hansen // Check for successful creation of 67*2cd25e64SAlexander Hansen // event handler and timer object. 68*2cd25e64SAlexander Hansen EXPECT_GE(rc, 0); 69*2cd25e64SAlexander Hansen 70*2cd25e64SAlexander Hansen std::function<void()> func( 71*2cd25e64SAlexander Hansen std::bind(&TimerTestCallBack::callBack, this)); 72*2cd25e64SAlexander Hansen timer = std::make_unique<Timer>(events, func); 73*2cd25e64SAlexander Hansen } 74*2cd25e64SAlexander Hansen 75*2cd25e64SAlexander Hansen // Gets called as part of each TEST_F destruction ~TimerTestCallBack()76*2cd25e64SAlexander Hansen ~TimerTestCallBack() override 77*2cd25e64SAlexander Hansen { 78*2cd25e64SAlexander Hansen events = sd_event_unref(events); 79*2cd25e64SAlexander Hansen } 80*2cd25e64SAlexander Hansen }; 81