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