blob: 512f169c5e17f1ac74620b2bb61e14d1cce82d05 [file]
#include "include/power_rail/pmbus_lib.hpp"
#include "gtest/gtest.h"
TEST(ParserStatusTest, TestParserStatusByte)
{
EXPECT_EQ(max34451::parserStatusByte(0xa0), "VOUT_OV_FAULT BUSY ");
EXPECT_EQ(max34451::parserStatusByte(0x01), "NONE_OF_THE_ABOVE ");
EXPECT_EQ(max34451::parserStatusByte(0xff), "INVALID");
}
TEST(ParserStatusTest, TestParserStatusWord)
{
EXPECT_EQ(max34451::parserStatusWord(0xa00f),
"NONE_OF_THE_ABOVE CML TEMPERATURE VIN_UV_FAULT INPUT VOUT ");
EXPECT_EQ(max34451::parserStatusWord(0x0001), "NONE_OF_THE_ABOVE ");
EXPECT_EQ(max34451::parserStatusWord(0xffff), "INVALID");
}
TEST(ParserStatusTest, TestParserStatusVout)
{
EXPECT_EQ(max34451::parserStatusVout(0xF0),
"VOUT_UV_FAULT VOUT_UV_WARNING VOUT_OV_WARNING VOUT_OV_FAULT ");
EXPECT_EQ(max34451::parserStatusVout(0x00), "");
EXPECT_EQ(max34451::parserStatusVout(0xFF), "INVALID");
}
TEST(ParserStatusTest, TestParserStatusIout)
{
EXPECT_EQ(max34451::parserStatusIout(0xC0),
"IOUT_OC_LV_FAULT IOUT_OC_FAULT ");
EXPECT_EQ(max34451::parserStatusIout(0x00), "");
EXPECT_EQ(max34451::parserStatusIout(0xFF), "INVALID");
}
TEST(ParserStatusTest, TestParserStatusInput)
{
EXPECT_EQ(max34451::parserStatusInput(0x80), "VIN_OV_FAULT ");
EXPECT_EQ(max34451::parserStatusInput(0x03), "PIN_OP_WARN IIN_OC_WARN ");
EXPECT_EQ(max34451::parserStatusInput(0xFF), "INVALID");
}
TEST(ParserStatusTest, TestParserStatusTemperature)
{
EXPECT_EQ(max34451::parserStatusTemperature(0xC0), "OT_WARN OT_FAULT ");
EXPECT_EQ(max34451::parserStatusTemperature(0x03), "");
EXPECT_EQ(max34451::parserStatusTemperature(0xFF), "INVALID");
}
TEST(ParserStatusTest, TestParserStatusCml)
{
EXPECT_EQ(max34451::parserStatusCml(0xE0),
"PEC_FAULT DATA_FAULT CMD_FAULT ");
EXPECT_EQ(max34451::parserStatusCml(0x01), "OTHER_CML_FAULT ");
EXPECT_EQ(max34451::parserStatusCml(0xFF), "INVALID");
}
TEST(TransferTest, TestTransferLinear11)
{
EXPECT_DOUBLE_EQ(max34451::transferLinear11(0x0400), 1024);
EXPECT_DOUBLE_EQ(max34451::transferLinear11(0x0800), 0);
EXPECT_DOUBLE_EQ(max34451::transferLinear11(0x8400), 0.015625);
EXPECT_DOUBLE_EQ(max34451::transferLinear11(0x0C00), 512);
EXPECT_DOUBLE_EQ(max34451::transferLinear11(0x0000), 0);
}
TEST(TransferTest, TestTransferLinear16)
{
EXPECT_DOUBLE_EQ(max34451::transferLinear16(8192), 1.0);
EXPECT_DOUBLE_EQ(max34451::transferLinear16(16384), 2.0);
EXPECT_DOUBLE_EQ(max34451::transferLinear16(0), 0.0);
EXPECT_DOUBLE_EQ(max34451::transferLinear16(1), 1.0 / 8192.0);
}
TEST(TransferTest, TestTransferDirectDataFormat)
{
EXPECT_DOUBLE_EQ(max34451::transferDirectDataFormat(1, 100, 2, 0), 1.0);
EXPECT_DOUBLE_EQ(max34451::transferDirectDataFormat(2, 1000, 3, 10), -4.5);
EXPECT_DOUBLE_EQ(max34451::transferDirectDataFormat(-1, 500, 2, -5), -10.0);
EXPECT_DOUBLE_EQ(max34451::transferDirectDataFormat(2, 100, 0, 10), 45.0);
EXPECT_DOUBLE_EQ(max34451::transferDirectDataFormat(1, 0, 2, 0), 0.0);
}
TEST(TransferTest, TestTransferDirectValue)
{
EXPECT_DOUBLE_EQ(max34451::transferDirectValue(100, 2.0), 200.0);
EXPECT_DOUBLE_EQ(max34451::transferDirectValue(-50, 2.5), -125.0);
EXPECT_DOUBLE_EQ(max34451::transferDirectValue(0, 100.0), 0.0);
EXPECT_DOUBLE_EQ(max34451::transferDirectValue(100, 0.0), 0.0);
EXPECT_DOUBLE_EQ(max34451::transferDirectValue(1, 1.0), 1.0);
}
TEST(TransferTest, TestTransferAscii)
{
std::vector<uint8_t> asciiArray = {'H', 'e', 'l', 'l', 'o'};
EXPECT_EQ(max34451::transferAscii(asciiArray), "Hello");
asciiArray = {};
EXPECT_EQ(max34451::transferAscii(asciiArray), "");
asciiArray = {0xC3, 0xA9}; // é
EXPECT_EQ(max34451::transferAscii(asciiArray), "\xC3\xA9");
asciiArray = {0x20, 0x7E}; // ' ' to '~'
EXPECT_EQ(max34451::transferAscii(asciiArray), " ~");
}