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