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