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