| #include "ipmi.hpp" |
| |
| #include <cstring> |
| |
| #include <gtest/gtest.h> |
| |
| namespace blobs |
| { |
| |
| // ipmid.hpp isn't installed where we can grab it and this value is per BMC |
| // SoC. |
| #define MAX_IPMI_BUFFER 64 |
| |
| TEST(StringInputTest, NullPointerInput) |
| { |
| // The method should verify it did receive a non-null input pointer. |
| |
| EXPECT_STREQ("", stringFromBuffer(NULL, 5).c_str()); |
| } |
| |
| TEST(StringInputTest, ZeroBytesInput) |
| { |
| // Verify that if the input length is 0 that it'll return the empty string. |
| |
| const char* request = "asdf"; |
| EXPECT_STREQ("", stringFromBuffer(request, 0).c_str()); |
| } |
| |
| TEST(StringInputTest, NulTerminatorNotFound) |
| { |
| // Verify that if there isn't a nul-terminator found in an otherwise valid |
| // string, it'll return the emptry string. |
| |
| char request[MAX_IPMI_BUFFER]; |
| std::memset(request, 'a', sizeof(request)); |
| EXPECT_STREQ("", stringFromBuffer(request, sizeof(request)).c_str()); |
| } |
| |
| TEST(StringInputTest, TwoNulsFound) |
| { |
| // Verify it makes you use the entire data region for the string. |
| char request[MAX_IPMI_BUFFER]; |
| request[0] = 'a'; |
| request[1] = 0; |
| std::memset(&request[2], 'b', sizeof(request) - 2); |
| request[MAX_IPMI_BUFFER - 1] = 0; |
| |
| // This case has two strings, and the last character is a nul-terminator. |
| EXPECT_STREQ("", stringFromBuffer(request, sizeof(request)).c_str()); |
| } |
| |
| TEST(StringInputTest, NulTerminatorFound) |
| { |
| // Verify that if it's provided a valid nul-terminated string, it'll |
| // return it. |
| |
| const char* request = "asdf"; |
| EXPECT_STREQ("asdf", stringFromBuffer(request, 5).c_str()); |
| } |
| } // namespace blobs |