#include "dbus/dbusactiveread.hpp" #include "test/dbushelper_mock.hpp" #include #include #include #include #include namespace pid_control { namespace { using ::testing::_; using ::testing::Invoke; using ::testing::NotNull; TEST(DbusActiveReadTest, BoringConstructorTest) { // Verify we can construct it. sdbusplus::SdBusMock sdbus_mock; auto bus_mock = sdbusplus::get_mocked_new(&sdbus_mock); auto helper = std::make_unique(); std::string path = "/asdf"; std::string service = "asdfasdf.asdfasdf"; DbusActiveRead ar(bus_mock, path, service, std::move(helper)); } TEST(DbusActiveReadTest, Read_VerifyCallsToDbusForValue) { // Verify it calls to get the value from dbus when requested. sdbusplus::SdBusMock sdbus_mock; auto bus_mock = sdbusplus::get_mocked_new(&sdbus_mock); auto helper = std::make_unique(); std::string path = "/asdf"; std::string service = "asdfasdf.asdfasdf"; EXPECT_CALL(*helper, getProperties(service, path, NotNull())) .WillOnce( Invoke([&](const std::string& service, const std::string& path, struct SensorProperties* prop) { prop->scale = -3; prop->value = 10000; prop->unit = "x"; })); DbusActiveRead ar(bus_mock, path, service, std::move(helper)); ReadReturn r = ar.read(); EXPECT_EQ(10, r.value); } // WARN: getProperties will raise an exception on failure // Instead of just not updating the value. } // namespace } // namespace pid_control