#include "config.h" #include "bmc_epoch.hpp" #include "manager.hpp" #include "types.hpp" #include #include namespace phosphor { namespace time { class TestBmcEpoch : public testing::Test { public: sdbusplus::bus_t bus; Manager manager; sd_event* event = nullptr; std::unique_ptr bmcEpoch; TestBmcEpoch() : bus(sdbusplus::bus::new_default()), manager(bus) { // BmcEpoch requires sd_event to init sd_event_default(&event); bus.attach_event(event, SD_EVENT_PRIORITY_NORMAL); bmcEpoch = std::make_unique(bus, objpathBmc, manager); } ~TestBmcEpoch() override { bus.detach_event(); sd_event_unref(event); } TestBmcEpoch(const TestBmcEpoch&) = delete; TestBmcEpoch(TestBmcEpoch&&) = delete; TestBmcEpoch& operator=(const TestBmcEpoch&) = delete; TestBmcEpoch& operator=(TestBmcEpoch&&) = delete; }; TEST_F(TestBmcEpoch, onModeChange) { bmcEpoch->onModeChanged(Mode::NTP); EXPECT_EQ(Mode::NTP, manager.getTimeMode()); bmcEpoch->onModeChanged(Mode::Manual); EXPECT_EQ(Mode::Manual, manager.getTimeMode()); } TEST_F(TestBmcEpoch, empty) { // Default mode is MANUAL EXPECT_EQ(Mode::Manual, manager.getTimeMode()); } TEST_F(TestBmcEpoch, getElapsed) { auto t1 = bmcEpoch->elapsed(); EXPECT_NE(0, t1); auto t2 = bmcEpoch->elapsed(); EXPECT_GE(t2, t1); } TEST_F(TestBmcEpoch, setElapsedOK) { // TODO: setting time will call sd-bus functions and it will fail on host // if we have gmock for sdbusplus::bus, we can test setElapsed. // But for now we can not test it } } // namespace time } // namespace phosphor