1*def5f5a2SGeorge Liu #include "json-config.hpp" 2*def5f5a2SGeorge Liu 3*def5f5a2SGeorge Liu #include <gtest/gtest.h> 4*def5f5a2SGeorge Liu 5*def5f5a2SGeorge Liu TEST(loadJsonConfig, testGoodPath) 6*def5f5a2SGeorge Liu { 7*def5f5a2SGeorge Liu static constexpr auto jsonPath = "config/led-group-config.json"; 8*def5f5a2SGeorge Liu LedMap ledMap = loadJsonConfig(jsonPath); 9*def5f5a2SGeorge Liu 10*def5f5a2SGeorge Liu std::string objPath = "/xyz/openbmc_project/led/groups"; 11*def5f5a2SGeorge Liu std::string bmcBooted = objPath + "/bmc_booted"; 12*def5f5a2SGeorge Liu std::string powerOn = objPath + "/power_on"; 13*def5f5a2SGeorge Liu std::string enclosureIdentify = objPath + "/enclosure_identify"; 14*def5f5a2SGeorge Liu 15*def5f5a2SGeorge Liu ASSERT_NE(ledMap.find(bmcBooted), ledMap.end()); 16*def5f5a2SGeorge Liu ASSERT_NE(ledMap.find(powerOn), ledMap.end()); 17*def5f5a2SGeorge Liu ASSERT_NE(ledMap.find(enclosureIdentify), ledMap.end()); 18*def5f5a2SGeorge Liu 19*def5f5a2SGeorge Liu LedAction bmcBootedActions = ledMap.at(bmcBooted); 20*def5f5a2SGeorge Liu LedAction powerOnActions = ledMap.at(powerOn); 21*def5f5a2SGeorge Liu LedAction enclosureIdentifyActions = ledMap.at(enclosureIdentify); 22*def5f5a2SGeorge Liu 23*def5f5a2SGeorge Liu for (const auto& group : bmcBootedActions) 24*def5f5a2SGeorge Liu { 25*def5f5a2SGeorge Liu ASSERT_EQ(group.name, "heartbeat"); 26*def5f5a2SGeorge Liu ASSERT_EQ(group.action, phosphor::led::Layout::On); 27*def5f5a2SGeorge Liu ASSERT_EQ(group.dutyOn, 50); 28*def5f5a2SGeorge Liu ASSERT_EQ(group.period, 0); 29*def5f5a2SGeorge Liu ASSERT_EQ(group.priority, phosphor::led::Layout::Blink); 30*def5f5a2SGeorge Liu } 31*def5f5a2SGeorge Liu 32*def5f5a2SGeorge Liu for (const auto& group : powerOnActions) 33*def5f5a2SGeorge Liu { 34*def5f5a2SGeorge Liu ASSERT_EQ(group.name, "power"); 35*def5f5a2SGeorge Liu ASSERT_EQ(group.action, phosphor::led::Layout::On); 36*def5f5a2SGeorge Liu ASSERT_EQ(group.dutyOn, 50); 37*def5f5a2SGeorge Liu ASSERT_EQ(group.period, 0); 38*def5f5a2SGeorge Liu ASSERT_EQ(group.priority, phosphor::led::Layout::On); 39*def5f5a2SGeorge Liu } 40*def5f5a2SGeorge Liu 41*def5f5a2SGeorge Liu for (const auto& group : enclosureIdentifyActions) 42*def5f5a2SGeorge Liu { 43*def5f5a2SGeorge Liu if (group.name == "front_id") 44*def5f5a2SGeorge Liu { 45*def5f5a2SGeorge Liu ASSERT_EQ(group.action, phosphor::led::Layout::Blink); 46*def5f5a2SGeorge Liu ASSERT_EQ(group.dutyOn, 50); 47*def5f5a2SGeorge Liu ASSERT_EQ(group.period, 1000); 48*def5f5a2SGeorge Liu ASSERT_EQ(group.priority, phosphor::led::Layout::Blink); 49*def5f5a2SGeorge Liu } 50*def5f5a2SGeorge Liu else if (group.name == "rear_id") 51*def5f5a2SGeorge Liu { 52*def5f5a2SGeorge Liu ASSERT_EQ(group.action, phosphor::led::Layout::Blink); 53*def5f5a2SGeorge Liu ASSERT_EQ(group.dutyOn, 50); 54*def5f5a2SGeorge Liu ASSERT_EQ(group.period, 1000); 55*def5f5a2SGeorge Liu ASSERT_EQ(group.priority, phosphor::led::Layout::Blink); 56*def5f5a2SGeorge Liu } 57*def5f5a2SGeorge Liu else 58*def5f5a2SGeorge Liu { 59*def5f5a2SGeorge Liu ASSERT_TRUE(false); 60*def5f5a2SGeorge Liu } 61*def5f5a2SGeorge Liu } 62*def5f5a2SGeorge Liu } 63*def5f5a2SGeorge Liu 64*def5f5a2SGeorge Liu TEST(loadJsonConfig, testBadPath) 65*def5f5a2SGeorge Liu { 66*def5f5a2SGeorge Liu static constexpr auto jsonPath = "config/led-group-config-malformed.json"; 67*def5f5a2SGeorge Liu ASSERT_THROW(loadJsonConfig(jsonPath), std::exception); 68*def5f5a2SGeorge Liu }