xref: /openbmc/phosphor-ipmi-blobs/test/ipmi_unittest.cpp (revision 97e69ca106fc2415f89370eea36fb674435b5bdb)
1  #include "ipmi.hpp"
2  
3  #include <cstring>
4  
5  #include <gtest/gtest.h>
6  
7  namespace blobs
8  {
9  
10  // ipmid.hpp isn't installed where we can grab it and this value is per BMC
11  // SoC.
12  #define MAX_IPMI_BUFFER 64
13  
TEST(StringInputTest,NullPointerInput)14  TEST(StringInputTest, NullPointerInput)
15  {
16      // The method should verify it did receive a non-null input pointer.
17      EXPECT_STREQ("", stringFromBuffer({}).c_str());
18  }
19  
TEST(StringInputTest,ZeroBytesInput)20  TEST(StringInputTest, ZeroBytesInput)
21  {
22      // Verify that if the input length is 0 that it'll return the empty string.
23      const std::string request = "asdf";
24      EXPECT_STREQ("", stringFromBuffer(
25                           std::vector<uint8_t>(request.begin(), request.end()))
26                           .c_str());
27  }
28  
TEST(StringInputTest,NulTerminatorNotFound)29  TEST(StringInputTest, NulTerminatorNotFound)
30  {
31      // Verify that if there isn't a nul-terminator found in an otherwise valid
32      // string, it'll return the emptry string.
33      std::array<char, MAX_IPMI_BUFFER> request;
34      std::memset(request.data(), 'a', sizeof(request));
35      EXPECT_STREQ("", stringFromBuffer(
36                           std::vector<uint8_t>(request.begin(), request.end()))
37                           .c_str());
38  }
39  
TEST(StringInputTest,NulTerminatorFound)40  TEST(StringInputTest, NulTerminatorFound)
41  {
42      // Verify that if it's provided a valid nul-terminated string, it'll
43      // return it.
44      std::string request = "asdf";
45      request.push_back('\0');
46      EXPECT_STREQ(
47          "asdf",
48          stringFromBuffer(std::vector<uint8_t>(request.begin(), request.end()))
49              .c_str());
50  }
51  } // namespace blobs
52