xref: /openbmc/phosphor-pid-control/test/sensor_manager_unittest.cpp (revision f8b6e55147148c3cfb42327ff267197a460b411c)
1 #include "sensors/manager.hpp"
2 #include "sensors/sensor.hpp"
3 #include "test/sensor_mock.hpp"
4 
5 #include <sdbusplus/test/sdbus_mock.hpp>
6 
7 #include <cstdint>
8 #include <memory>
9 #include <string>
10 #include <utility>
11 
12 #include <gmock/gmock.h>
13 #include <gtest/gtest.h>
14 
15 namespace pid_control
16 {
17 namespace
18 {
19 
20 using ::testing::_;
21 using ::testing::IsNull;
22 using ::testing::Return;
23 using ::testing::StrEq;
24 
TEST(SensorManagerTest,BoringConstructorTest)25 TEST(SensorManagerTest, BoringConstructorTest)
26 {
27     // Build a boring SensorManager.
28 
29     sdbusplus::SdBusMock sdbus_mock_passive, sdbus_mock_host;
30     auto bus_mock_passive = sdbusplus::get_mocked_new(&sdbus_mock_passive);
31     auto bus_mock_host = sdbusplus::get_mocked_new(&sdbus_mock_host);
32 
33     EXPECT_CALL(sdbus_mock_host,
34                 sd_bus_add_object_manager(
35                     IsNull(), _, StrEq("/xyz/openbmc_project/extsensors")))
36         .WillOnce(Return(0));
37 
38     SensorManager s(bus_mock_passive, bus_mock_host);
39     // Success
40 }
41 
TEST(SensorManagerTest,AddSensorInvalidTypeTest)42 TEST(SensorManagerTest, AddSensorInvalidTypeTest)
43 {
44     // AddSensor doesn't validate the type of sensor you're adding, because
45     // ultimately it doesn't care -- but if we decide to change that this
46     // test will start failing :D
47 
48     sdbusplus::SdBusMock sdbus_mock_passive, sdbus_mock_host;
49     auto bus_mock_passive = sdbusplus::get_mocked_new(&sdbus_mock_passive);
50     auto bus_mock_host = sdbusplus::get_mocked_new(&sdbus_mock_host);
51 
52     EXPECT_CALL(sdbus_mock_host,
53                 sd_bus_add_object_manager(
54                     IsNull(), _, StrEq("/xyz/openbmc_project/extsensors")))
55         .WillOnce(Return(0));
56 
57     SensorManager s(bus_mock_passive, bus_mock_host);
58 
59     std::string name = "name";
60     std::string type = "invalid";
61     int64_t timeout = 1;
62     std::unique_ptr<Sensor> sensor =
63         std::make_unique<SensorMock>(name, timeout);
64     Sensor* sensor_ptr = sensor.get();
65 
66     s.addSensor(type, name, std::move(sensor));
67     EXPECT_EQ(s.getSensor(name), sensor_ptr);
68 }
69 
70 } // namespace
71 } // namespace pid_control
72