1eb1f46a8SAlexander Hansen #include "group.hpp" 2eb1f46a8SAlexander Hansen #include "ledlayout.hpp" 3eb1f46a8SAlexander Hansen #include "manager.hpp" 4eb1f46a8SAlexander Hansen #include "test-group-priority.hpp" 5eb1f46a8SAlexander Hansen 6eb1f46a8SAlexander Hansen #include <sdbusplus/bus.hpp> 7eb1f46a8SAlexander Hansen 8eb1f46a8SAlexander Hansen #include <algorithm> 9eb1f46a8SAlexander Hansen #include <set> 10eb1f46a8SAlexander Hansen 11eb1f46a8SAlexander Hansen #include <gtest/gtest.h> 12eb1f46a8SAlexander Hansen 13eb1f46a8SAlexander Hansen using namespace phosphor::led; 14eb1f46a8SAlexander Hansen 15eb1f46a8SAlexander Hansen using Action = phosphor::led::Layout::Action; 16eb1f46a8SAlexander Hansen 17eb1f46a8SAlexander Hansen // systemLedMap is generated code 18eb1f46a8SAlexander Hansen // static const phosphor::led::GroupMap systemLedMap = {}; 19eb1f46a8SAlexander Hansen 20eb1f46a8SAlexander Hansen const std::string basePath = "/xyz/openbmc_project/led/groups/"; 21eb1f46a8SAlexander Hansen 22eb1f46a8SAlexander Hansen TEST(YamlGroupPriorityTest, assertYAMLLedOn) 23eb1f46a8SAlexander Hansen { 24eb1f46a8SAlexander Hansen const std::string groupPath = basePath + "group1"; 25eb1f46a8SAlexander Hansen EXPECT_EQ(systemLedMap.contains(groupPath), true); 26eb1f46a8SAlexander Hansen 27eb1f46a8SAlexander Hansen phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath); 28eb1f46a8SAlexander Hansen 29*638d1487SAlexander Hansen EXPECT_EQ(group.priority, 1); 30eb1f46a8SAlexander Hansen EXPECT_EQ(group.actionSet.size(), 1); 31eb1f46a8SAlexander Hansen 32eb1f46a8SAlexander Hansen for (auto& led : group.actionSet) 33eb1f46a8SAlexander Hansen { 34eb1f46a8SAlexander Hansen EXPECT_EQ(led.name, "led1"); 35eb1f46a8SAlexander Hansen EXPECT_EQ(led.action, Action::On); 36*638d1487SAlexander Hansen EXPECT_EQ(led.priority, std::nullopt); 37eb1f46a8SAlexander Hansen } 38eb1f46a8SAlexander Hansen } 39eb1f46a8SAlexander Hansen 40eb1f46a8SAlexander Hansen TEST(YamlGroupPriorityTest, assertYAMLLedOff) 41eb1f46a8SAlexander Hansen { 42eb1f46a8SAlexander Hansen const std::string groupPath = basePath + "group2"; 43eb1f46a8SAlexander Hansen EXPECT_EQ(systemLedMap.contains(groupPath), true); 44eb1f46a8SAlexander Hansen 45eb1f46a8SAlexander Hansen phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath); 46eb1f46a8SAlexander Hansen 47*638d1487SAlexander Hansen EXPECT_EQ(group.priority, 2); 48eb1f46a8SAlexander Hansen EXPECT_EQ(group.actionSet.size(), 1); 49eb1f46a8SAlexander Hansen 50eb1f46a8SAlexander Hansen for (auto& led : group.actionSet) 51eb1f46a8SAlexander Hansen { 52eb1f46a8SAlexander Hansen EXPECT_EQ(led.name, "led1"); 53eb1f46a8SAlexander Hansen EXPECT_EQ(led.action, Action::Off); 54*638d1487SAlexander Hansen EXPECT_EQ(led.priority, std::nullopt); 55eb1f46a8SAlexander Hansen } 56eb1f46a8SAlexander Hansen } 57eb1f46a8SAlexander Hansen 58eb1f46a8SAlexander Hansen TEST(YamlGroupPriorityTest, assertYAMLLedBlink) 59eb1f46a8SAlexander Hansen { 60eb1f46a8SAlexander Hansen const std::string groupPath = basePath + "group3"; 61eb1f46a8SAlexander Hansen EXPECT_EQ(systemLedMap.contains(groupPath), true); 62eb1f46a8SAlexander Hansen 63eb1f46a8SAlexander Hansen phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath); 64eb1f46a8SAlexander Hansen 65*638d1487SAlexander Hansen EXPECT_EQ(group.priority, 3); 66eb1f46a8SAlexander Hansen EXPECT_EQ(group.actionSet.size(), 1); 67eb1f46a8SAlexander Hansen 68eb1f46a8SAlexander Hansen for (auto& led : group.actionSet) 69eb1f46a8SAlexander Hansen { 70eb1f46a8SAlexander Hansen EXPECT_EQ(led.name, "led1"); 71eb1f46a8SAlexander Hansen EXPECT_EQ(led.action, Action::Blink); 72eb1f46a8SAlexander Hansen EXPECT_EQ(led.dutyOn, 50); 73eb1f46a8SAlexander Hansen EXPECT_EQ(led.period, 1000); 74*638d1487SAlexander Hansen EXPECT_EQ(led.priority, std::nullopt); 75eb1f46a8SAlexander Hansen } 76eb1f46a8SAlexander Hansen } 77eb1f46a8SAlexander Hansen 78eb1f46a8SAlexander Hansen TEST(YamlGroupPriorityTest, assertYAMLGroupPriority) 79eb1f46a8SAlexander Hansen { 80eb1f46a8SAlexander Hansen const std::string groupPath = basePath + "group4"; 81eb1f46a8SAlexander Hansen EXPECT_EQ(systemLedMap.contains(groupPath), true); 82eb1f46a8SAlexander Hansen 83eb1f46a8SAlexander Hansen phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath); 84eb1f46a8SAlexander Hansen 85eb1f46a8SAlexander Hansen EXPECT_EQ(group.priority, 2); 86eb1f46a8SAlexander Hansen EXPECT_EQ(group.actionSet.size(), 2); 87eb1f46a8SAlexander Hansen 88eb1f46a8SAlexander Hansen int found = 0; 89eb1f46a8SAlexander Hansen for (auto& led : group.actionSet) 90eb1f46a8SAlexander Hansen { 91eb1f46a8SAlexander Hansen if (led.name == "led1") 92eb1f46a8SAlexander Hansen { 93eb1f46a8SAlexander Hansen EXPECT_EQ(led.action, Action::On); 94*638d1487SAlexander Hansen EXPECT_EQ(led.priority, std::nullopt); 95eb1f46a8SAlexander Hansen found++; 96eb1f46a8SAlexander Hansen } 97eb1f46a8SAlexander Hansen if (led.name == "led2") 98eb1f46a8SAlexander Hansen { 99eb1f46a8SAlexander Hansen EXPECT_EQ(led.action, Action::Off); 100*638d1487SAlexander Hansen EXPECT_EQ(led.priority, std::nullopt); 101eb1f46a8SAlexander Hansen found++; 102eb1f46a8SAlexander Hansen } 103eb1f46a8SAlexander Hansen } 104eb1f46a8SAlexander Hansen 105eb1f46a8SAlexander Hansen EXPECT_EQ(found, group.actionSet.size()); 106eb1f46a8SAlexander Hansen } 107