summaryrefslogtreecommitdiffstats
path: root/test/ipmi_unittest.cpp
blob: 8f27ed75c915d8af6da32f92465ea57539310c59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#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
OpenPOWER on IntegriCloud