xref: /openbmc/pldm/fw-update/test/firmware_inventory_test.cpp (revision 7ad45b401134e3b3a05a75200dbba00afd5aee46)
1*7ad45b40SUnive Tien #include "fw-update/firmware_inventory.hpp"
2*7ad45b40SUnive Tien 
3*7ad45b40SUnive Tien #include <string>
4*7ad45b40SUnive Tien 
5*7ad45b40SUnive Tien #include <gtest/gtest.h>
6*7ad45b40SUnive Tien 
7*7ad45b40SUnive Tien using namespace pldm::fw_update;
8*7ad45b40SUnive Tien 
9*7ad45b40SUnive Tien class FirmwareInventoryTest : public FirmwareInventory
10*7ad45b40SUnive Tien {
11*7ad45b40SUnive Tien   public:
12*7ad45b40SUnive Tien     using FirmwareInventory::FirmwareInventory;
getSoftwarePath() const13*7ad45b40SUnive Tien     const std::string& getSoftwarePath() const
14*7ad45b40SUnive Tien     {
15*7ad45b40SUnive Tien         return this->softwarePath;
16*7ad45b40SUnive Tien     }
getAssociation() const17*7ad45b40SUnive Tien     const SoftwareAssociationDefinitions& getAssociation() const
18*7ad45b40SUnive Tien     {
19*7ad45b40SUnive Tien         return this->association;
20*7ad45b40SUnive Tien     }
getVersion() const21*7ad45b40SUnive Tien     const SoftwareVersion& getVersion() const
22*7ad45b40SUnive Tien     {
23*7ad45b40SUnive Tien         return this->version;
24*7ad45b40SUnive Tien     }
25*7ad45b40SUnive Tien };
26*7ad45b40SUnive Tien 
TEST(FirmwareInventoryTest,ConstructorSetsProperties)27*7ad45b40SUnive Tien TEST(FirmwareInventoryTest, ConstructorSetsProperties)
28*7ad45b40SUnive Tien {
29*7ad45b40SUnive Tien     SoftwareIdentifier softwareIdentifier{1, 100};
30*7ad45b40SUnive Tien     std::string expectedSoftwarePath =
31*7ad45b40SUnive Tien         "/xyz/openbmc_project/software/PLDM_Device_TestDevice_1234";
32*7ad45b40SUnive Tien     std::string expectedSoftwareVersion = "2.3.4";
33*7ad45b40SUnive Tien     std::string expectedEndpointPath =
34*7ad45b40SUnive Tien         "/xyz/openbmc_project/inventory/system/board/PLDM_Device";
35*7ad45b40SUnive Tien     Descriptors firmwareDescriptors;
36*7ad45b40SUnive Tien     ComponentInfo firmwareComponentInfo;
37*7ad45b40SUnive Tien     SoftwareVersionPurpose expectedPurpose = SoftwareVersionPurpose::Unknown;
38*7ad45b40SUnive Tien 
39*7ad45b40SUnive Tien     FirmwareInventoryTest inventory(
40*7ad45b40SUnive Tien         softwareIdentifier, expectedSoftwarePath, expectedSoftwareVersion,
41*7ad45b40SUnive Tien         expectedEndpointPath, firmwareDescriptors, firmwareComponentInfo,
42*7ad45b40SUnive Tien         expectedPurpose);
43*7ad45b40SUnive Tien 
44*7ad45b40SUnive Tien     EXPECT_EQ(inventory.getSoftwarePath(), expectedSoftwarePath);
45*7ad45b40SUnive Tien     auto associationTuples = inventory.getAssociation().associations();
46*7ad45b40SUnive Tien     ASSERT_FALSE(associationTuples.empty());
47*7ad45b40SUnive Tien     EXPECT_EQ(std::get<2>(associationTuples[0]), expectedEndpointPath);
48*7ad45b40SUnive Tien     EXPECT_EQ(inventory.getVersion().version(), expectedSoftwareVersion);
49*7ad45b40SUnive Tien     EXPECT_EQ(inventory.getVersion().purpose(), expectedPurpose);
50*7ad45b40SUnive Tien }
51