blob: f7e010012ebade77dea83d2fb21d605277f4d98d [file]
#include "include/power_rail/max34451_utility.hpp"
#include "gtest/gtest.h"
TEST(Max34451Test, CheckPowerRailFault)
{
EXPECT_TRUE(max34451::checkPowerRailFault(0x20, true));
EXPECT_FALSE(max34451::checkPowerRailFault(0x20, false));
EXPECT_TRUE(max34451::checkPowerRailFault(0x10, false));
EXPECT_TRUE(max34451::checkPowerRailFault(0x10, true));
EXPECT_FALSE(max34451::checkPowerRailFault(0x00, false));
EXPECT_FALSE(max34451::checkPowerRailFault(0x00, true));
}
TEST(Max34451Test, GetWordAndLog)
{
std::vector<uint8_t> data = {0x12, 0x34};
std::stringstream logStream;
uint16_t result = max34451::getWordAndLog(logStream, data, 0, 1,
"TestLabel: ");
EXPECT_EQ(result, 0x1234);
EXPECT_EQ(logStream.str(), "TestLabel: 0x1234\n");
}
TEST(Max34451Test, LoadConfig)
{
max34451::Max34451Logger logger;
std::ofstream tempFile("test_config.json");
tempFile << R"({
"Bus": "1",
"Address": "0x1A",
"Source": "TestSource",
"IncludeWarnings": true,
"Registers": {
"MfrChannelConfigReg": "0xAA",
"MfrPsenConfigReg": "0xBB",
"MfrPwmConfigReg": "0xCC",
"MfrNvFaultLogReg": "0xDD",
"MfrNvLogConfigReg": "0xEE",
"StatusWordReg": "0xFF",
"StatusCmlReg": "0x11",
"StatusMfrSpecificReg": "0x22"
},
"FaultLogConfig": {
"Command": "0x03",
"Offset": "5"
},
"EnableBits": {
"ForceLog": "1",
"ClearLog": ["2", "3"]
},
"SequencerRegisters": [{
"PageToPowerRailMap": {
"0": "Rail1",
"1": "Rail2"
}
}],
"RailPriority": ["Rail1", "Rail2"]
})";
tempFile.close();
logger.loadConfig("test_config.json");
EXPECT_EQ(logger.bus, 1);
EXPECT_EQ(logger.address, 0x1A);
EXPECT_EQ(logger.source, "TestSource");
EXPECT_TRUE(logger.includeWarnings);
EXPECT_EQ(logger.mfrChannelConfigReg, 0xAA);
EXPECT_EQ(logger.mfrPsenConfigReg, 0xBB);
EXPECT_EQ(logger.mfrPwmConfigReg, 0xCC);
EXPECT_EQ(logger.mfrNvFaultLogReg, 0xDD);
EXPECT_EQ(logger.mfrNvLogConfigReg, 0xEE);
EXPECT_EQ(logger.statusWordReg, 0xFF);
EXPECT_EQ(logger.statusCmlReg, 0x11);
EXPECT_EQ(logger.statusMfrSpecificReg, 0x22);
EXPECT_EQ(logger.faultLogCommand, 0x03);
EXPECT_EQ(logger.faultLogOffset, 5);
EXPECT_EQ(logger.forceLogBit, 1);
EXPECT_EQ(logger.clearLogBits.size(), 2);
EXPECT_EQ(logger.clearLogBits[0], 2);
EXPECT_EQ(logger.clearLogBits[1], 3);
EXPECT_EQ(logger.sequencerRegisters.size(), 1);
EXPECT_EQ(logger.railPriority.size(), 2);
EXPECT_EQ(logger.railPriority[0], "Rail1");
EXPECT_EQ(logger.railPriority[1], "Rail2");
}
TEST(Max34451Test, Max34451PowerRailParser)
{
max34451::Max34451Logger logger;
logger.faultLogOffset = 0;
logger.includeWarnings = true;
json sequencerReg = {
{max34451::kPageToPowerRailMap, {{"0", "Rail1"}, {"1", "Rail2"}}}};
logger.sequencerRegisters.push_back(sequencerReg);
std::vector<uint8_t> faultLog = {0x20, 0x10};
std::stringstream logStream;
max34451::max34451PowerRailParser(logger, faultLog, logStream);
std::string expectedOutput = " \"Rail1\"\n \"Rail2\"\n";
EXPECT_EQ(logStream.str(), expectedOutput);
}