blob: 028a0d69c663db0aa1fb8d8c928b6937e9572807 [file] [log] [blame]
Patrick Venturea62466c2021-02-08 14:55:18 -08001#include "FruUtils.hpp"
2
3#include <array>
4
5#include "gtest/gtest.h"
6
7extern "C"
8{
9// Include for I2C_SMBUS_BLOCK_MAX
10#include <linux/i2c.h>
11}
12
13TEST(ValidateHeaderTest, InvalidFruVersionReturnsFalse)
14{
15 // Validates the FruVersion is checked for the only legal value.
16 constexpr std::array<uint8_t, I2C_SMBUS_BLOCK_MAX> fru_header = {
17 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
18
19 EXPECT_FALSE(validateHeader(fru_header));
20}
Vijay Khemka1694ef62021-02-12 23:14:49 +000021
22TEST(VerifyOffsetTest, EmptyFruDataReturnsFalse)
23{
24 // Validates the FruData size is checked for non empty.
25 std::vector<uint8_t> fru_data = {};
26
27 EXPECT_FALSE(verifyOffset(fru_data, fruAreas::fruAreaChassis, 0));
28}
29
30TEST(VerifyOffsetTest, AreaOutOfRangeReturnsFalse)
31{
32 // Validates the FruArea value, check if it is within range.
33 const std::vector<uint8_t> fru_data = {0x01, 0x00, 0x00, 0x00, 0x00,
34 0x00, 0x00, 0x00, 0x00};
35
36 unsigned int areaOutOfRange = 8;
37 EXPECT_FALSE(
38 verifyOffset(fru_data, static_cast<fruAreas>(areaOutOfRange), 0));
39}
40
41TEST(VerifyOffsetTest, OverlapNextAreaReturnsFalse)
42{
43 // Validates the Overlap of offsets with overlapped values.
44 const std::vector<uint8_t> fru_data = {0x01, 0x00, 0x01, 0x02, 0x03,
45 0x04, 0x00, 0x00, 0x00};
46
47 EXPECT_FALSE(verifyOffset(fru_data, fruAreas::fruAreaChassis, 2));
48}
49
50TEST(VerifyOffsetTest, OverlapPrevAreaReturnsFalse)
51{
52 // Validates the Overlap of offsets with overlapped values.
53 const std::vector<uint8_t> fru_data = {0x01, 0x00, 0x01, 0x03, 0x02,
54 0x07, 0x00, 0x00, 0x00};
55
56 EXPECT_FALSE(verifyOffset(fru_data, fruAreas::fruAreaProduct, 2));
57}
58
59TEST(VerifyOffsetTest, ValidInputDataNoOverlapReturnsTrue)
60{
61 // Validates all inputs with expected value and no overlap.
62 const std::vector<uint8_t> fru_data = {0x01, 0x00, 0x01, 0x02, 0x03,
63 0x04, 0x00, 0x00, 0x00};
64
65 EXPECT_TRUE(verifyOffset(fru_data, fruAreas::fruAreaChassis, 1));
66}