blob: c31a7880f6d56fc85ded59edf519a41467c7edd6 [file] [log] [blame]
Alexander Hanseneb1f46a2024-07-30 16:09:07 +02001#include "group.hpp"
2#include "ledlayout.hpp"
3#include "manager.hpp"
4#include "test-group-priority.hpp"
5
6#include <sdbusplus/bus.hpp>
7
8#include <algorithm>
9#include <set>
10
11#include <gtest/gtest.h>
12
13using namespace phosphor::led;
14
15using Action = phosphor::led::Layout::Action;
16
17// systemLedMap is generated code
18// static const phosphor::led::GroupMap systemLedMap = {};
19
20const std::string basePath = "/xyz/openbmc_project/led/groups/";
21
22TEST(YamlGroupPriorityTest, assertYAMLLedOn)
23{
24 const std::string groupPath = basePath + "group1";
25 EXPECT_EQ(systemLedMap.contains(groupPath), true);
26
27 phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
28
Alexander Hansen638d1482024-08-21 17:39:57 +020029 EXPECT_EQ(group.priority, 1);
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020030 EXPECT_EQ(group.actionSet.size(), 1);
31
George Liu3d487512024-08-23 09:19:57 +080032 for (const auto& led : group.actionSet)
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020033 {
34 EXPECT_EQ(led.name, "led1");
35 EXPECT_EQ(led.action, Action::On);
Alexander Hansen638d1482024-08-21 17:39:57 +020036 EXPECT_EQ(led.priority, std::nullopt);
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020037 }
38}
39
40TEST(YamlGroupPriorityTest, assertYAMLLedOff)
41{
42 const std::string groupPath = basePath + "group2";
43 EXPECT_EQ(systemLedMap.contains(groupPath), true);
44
45 phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
46
Alexander Hansen638d1482024-08-21 17:39:57 +020047 EXPECT_EQ(group.priority, 2);
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020048 EXPECT_EQ(group.actionSet.size(), 1);
49
George Liu3d487512024-08-23 09:19:57 +080050 for (const auto& led : group.actionSet)
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020051 {
52 EXPECT_EQ(led.name, "led1");
53 EXPECT_EQ(led.action, Action::Off);
Alexander Hansen638d1482024-08-21 17:39:57 +020054 EXPECT_EQ(led.priority, std::nullopt);
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020055 }
56}
57
58TEST(YamlGroupPriorityTest, assertYAMLLedBlink)
59{
60 const std::string groupPath = basePath + "group3";
61 EXPECT_EQ(systemLedMap.contains(groupPath), true);
62
63 phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
64
Alexander Hansen638d1482024-08-21 17:39:57 +020065 EXPECT_EQ(group.priority, 3);
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020066 EXPECT_EQ(group.actionSet.size(), 1);
67
George Liu3d487512024-08-23 09:19:57 +080068 for (const auto& led : group.actionSet)
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020069 {
70 EXPECT_EQ(led.name, "led1");
71 EXPECT_EQ(led.action, Action::Blink);
72 EXPECT_EQ(led.dutyOn, 50);
73 EXPECT_EQ(led.period, 1000);
Alexander Hansen638d1482024-08-21 17:39:57 +020074 EXPECT_EQ(led.priority, std::nullopt);
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020075 }
76}
77
78TEST(YamlGroupPriorityTest, assertYAMLGroupPriority)
79{
80 const std::string groupPath = basePath + "group4";
81 EXPECT_EQ(systemLedMap.contains(groupPath), true);
82
83 phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
84
85 EXPECT_EQ(group.priority, 2);
86 EXPECT_EQ(group.actionSet.size(), 2);
87
88 int found = 0;
George Liu3d487512024-08-23 09:19:57 +080089 for (const auto& led : group.actionSet)
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020090 {
91 if (led.name == "led1")
92 {
93 EXPECT_EQ(led.action, Action::On);
Alexander Hansen638d1482024-08-21 17:39:57 +020094 EXPECT_EQ(led.priority, std::nullopt);
Alexander Hanseneb1f46a2024-07-30 16:09:07 +020095 found++;
96 }
97 if (led.name == "led2")
98 {
99 EXPECT_EQ(led.action, Action::Off);
Alexander Hansen638d1482024-08-21 17:39:57 +0200100 EXPECT_EQ(led.priority, std::nullopt);
Alexander Hanseneb1f46a2024-07-30 16:09:07 +0200101 found++;
102 }
103 }
104
105 EXPECT_EQ(found, group.actionSet.size());
106}