xref: /openbmc/pldm/oem/ibm/test/host_bmc_lamp_test.cpp (revision f264c08d50359f68e90dfeb22c3b4cb62d198c66)
1 #include "oem/ibm/host-bmc/host_lamp_test.hpp"
2 #include "test/test_instance_id.hpp"
3 
4 #include <cstring>
5 
6 #include <gmock/gmock.h>
7 #include <gtest/gtest.h>
8 
9 using namespace pldm::led;
10 using ::testing::DoAll;
11 using ::testing::Return;
12 using ::testing::SetArgPointee;
13 
14 class MockLampTest : public HostLampTest
15 {
16   public:
MockLampTest(sdbusplus::bus_t & bus,const std::string & objPath,uint8_t mctp_eid,pldm::InstanceIdDb & instanceIdDb,pldm_pdr * repo,pldm::requester::Handler<pldm::requester::Request> * handler)17     MockLampTest(sdbusplus::bus_t& bus, const std::string& objPath,
18                  uint8_t mctp_eid, pldm::InstanceIdDb& instanceIdDb,
19                  pldm_pdr* repo,
20                  pldm::requester::Handler<pldm::requester::Request>* handler) :
21         HostLampTest(bus, objPath, mctp_eid, instanceIdDb, repo, handler)
22     {}
23 
24     MOCK_METHOD(uint16_t, getEffecterID, (), (override));
25     MOCK_METHOD(uint8_t, setHostStateEffecter, (uint16_t effecterId),
26                 (override));
27 };
28 
TEST(TestLamp,Asserted)29 TEST(TestLamp, Asserted)
30 {
31     sdbusplus::bus_t bus = sdbusplus::bus::new_default();
32     TestInstanceIdDb instanceIdDb;
33 
34     MockLampTest lampTest(bus, "/xyz/openbmc_project/led/groups/host_lamp_test",
35                           0, instanceIdDb, nullptr, nullptr);
36 
37     lampTest.asserted(false);
38     EXPECT_EQ(lampTest.asserted(), false);
39 
40     EXPECT_CALL(lampTest, getEffecterID())
41         .Times(2)
42         .WillOnce(Return(0))
43         .WillOnce(Return(1));
44     EXPECT_CALL(lampTest, setHostStateEffecter(1)).Times(1).WillOnce(Return(0));
45 
46     ASSERT_THROW(lampTest.asserted(true), sdbusplus::exception::SdBusError);
47 
48     lampTest.asserted(true);
49     EXPECT_EQ(lampTest.asserted(), true);
50 }
51