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