blob: 36f5d4ad695939cce22bd10129fbe7284aa5978d [file] [log] [blame]
Willy Tu3b1b4272021-03-02 17:58:10 -08001#include "commands.hpp"
2#include "flash_size.hpp"
3#include "handler_mock.hpp"
4
5#include <cstdint>
6#include <cstring>
7#include <string>
8#include <vector>
9
10#include <gtest/gtest.h>
11
12#define MAX_IPMI_BUFFER 64
13
14using ::testing::Return;
15
16namespace google
17{
18namespace ipmi
19{
20
21TEST(FlashSizeCommandTest, InvalidCommandLength)
22{
23 // GetFlashSizeRequest is one byte, let's send 0.
24 std::vector<std::uint8_t> request = {};
25 size_t dataLen = request.size();
26 std::uint8_t reply[MAX_IPMI_BUFFER];
27
28 HandlerMock hMock;
29 EXPECT_EQ(IPMI_CC_REQ_DATA_LEN_INVALID,
30 getFlashSize(request.data(), reply, &dataLen, &hMock));
31}
32
33TEST(FlashSizeCommandTest, ValidRequest)
34{
35 std::vector<std::uint8_t> request = {SysOEMCommands::SysGetFlashSize};
36 size_t dataLen = request.size();
37 std::uint8_t reply[MAX_IPMI_BUFFER];
38 uint32_t flashSize = 5422312; // 0x52BCE8
39
40 HandlerMock hMock;
41 EXPECT_CALL(hMock, getFlashSize()).WillOnce(Return(flashSize));
42 EXPECT_EQ(IPMI_CC_OK,
43 getFlashSize(request.data(), reply, &dataLen, &hMock));
44 EXPECT_EQ(dataLen, 5);
45 EXPECT_EQ(reply[4], 0);
46 EXPECT_EQ(reply[3], 0x52);
47 EXPECT_EQ(reply[2], 0xBC);
48 EXPECT_EQ(reply[1], 0xE8);
49}
50
51} // namespace ipmi
52} // namespace google