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