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