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 
TEST(YamlGroupPriorityTest,assertYAMLLedOn)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 
29638d1487SAlexander Hansen     EXPECT_EQ(group.priority, 1);
30eb1f46a8SAlexander Hansen     EXPECT_EQ(group.actionSet.size(), 1);
31eb1f46a8SAlexander Hansen 
32*3d48751bSGeorge Liu     for (const auto& led : group.actionSet)
33eb1f46a8SAlexander Hansen     {
34eb1f46a8SAlexander Hansen         EXPECT_EQ(led.name, "led1");
35eb1f46a8SAlexander Hansen         EXPECT_EQ(led.action, Action::On);
36638d1487SAlexander Hansen         EXPECT_EQ(led.priority, std::nullopt);
37eb1f46a8SAlexander Hansen     }
38eb1f46a8SAlexander Hansen }
39eb1f46a8SAlexander Hansen 
TEST(YamlGroupPriorityTest,assertYAMLLedOff)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 
47638d1487SAlexander Hansen     EXPECT_EQ(group.priority, 2);
48eb1f46a8SAlexander Hansen     EXPECT_EQ(group.actionSet.size(), 1);
49eb1f46a8SAlexander Hansen 
50*3d48751bSGeorge Liu     for (const auto& led : group.actionSet)
51eb1f46a8SAlexander Hansen     {
52eb1f46a8SAlexander Hansen         EXPECT_EQ(led.name, "led1");
53eb1f46a8SAlexander Hansen         EXPECT_EQ(led.action, Action::Off);
54638d1487SAlexander Hansen         EXPECT_EQ(led.priority, std::nullopt);
55eb1f46a8SAlexander Hansen     }
56eb1f46a8SAlexander Hansen }
57eb1f46a8SAlexander Hansen 
TEST(YamlGroupPriorityTest,assertYAMLLedBlink)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 
65638d1487SAlexander Hansen     EXPECT_EQ(group.priority, 3);
66eb1f46a8SAlexander Hansen     EXPECT_EQ(group.actionSet.size(), 1);
67eb1f46a8SAlexander Hansen 
68*3d48751bSGeorge Liu     for (const 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);
74638d1487SAlexander Hansen         EXPECT_EQ(led.priority, std::nullopt);
75eb1f46a8SAlexander Hansen     }
76eb1f46a8SAlexander Hansen }
77eb1f46a8SAlexander Hansen 
TEST(YamlGroupPriorityTest,assertYAMLGroupPriority)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;
89*3d48751bSGeorge Liu     for (const auto& led : group.actionSet)
90eb1f46a8SAlexander Hansen     {
91eb1f46a8SAlexander Hansen         if (led.name == "led1")
92eb1f46a8SAlexander Hansen         {
93eb1f46a8SAlexander Hansen             EXPECT_EQ(led.action, Action::On);
94638d1487SAlexander 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);
100638d1487SAlexander 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