| #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), " ~"); |
| } |