blob: b257c171a6fdc99a9e35deba9f3b95ba853e6a18 [file] [log] [blame]
#include "group.hpp"
#include "ledlayout.hpp"
#include "manager.hpp"
#include "test-group-priority.hpp"
#include <sdbusplus/bus.hpp>
#include <algorithm>
#include <set>
#include <gtest/gtest.h>
using namespace phosphor::led;
using Action = phosphor::led::Layout::Action;
// systemLedMap is generated code
// static const phosphor::led::GroupMap systemLedMap = {};
const std::string basePath = "/xyz/openbmc_project/led/groups/";
TEST(YamlGroupPriorityTest, assertYAMLLedOn)
{
const std::string groupPath = basePath + "group1";
EXPECT_EQ(systemLedMap.contains(groupPath), true);
phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
EXPECT_EQ(group.priority, 1);
EXPECT_EQ(group.actionSet.size(), 1);
for (auto& led : group.actionSet)
{
EXPECT_EQ(led.name, "led1");
EXPECT_EQ(led.action, Action::On);
EXPECT_EQ(led.priority, std::nullopt);
}
}
TEST(YamlGroupPriorityTest, assertYAMLLedOff)
{
const std::string groupPath = basePath + "group2";
EXPECT_EQ(systemLedMap.contains(groupPath), true);
phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
EXPECT_EQ(group.priority, 2);
EXPECT_EQ(group.actionSet.size(), 1);
for (auto& led : group.actionSet)
{
EXPECT_EQ(led.name, "led1");
EXPECT_EQ(led.action, Action::Off);
EXPECT_EQ(led.priority, std::nullopt);
}
}
TEST(YamlGroupPriorityTest, assertYAMLLedBlink)
{
const std::string groupPath = basePath + "group3";
EXPECT_EQ(systemLedMap.contains(groupPath), true);
phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
EXPECT_EQ(group.priority, 3);
EXPECT_EQ(group.actionSet.size(), 1);
for (auto& led : group.actionSet)
{
EXPECT_EQ(led.name, "led1");
EXPECT_EQ(led.action, Action::Blink);
EXPECT_EQ(led.dutyOn, 50);
EXPECT_EQ(led.period, 1000);
EXPECT_EQ(led.priority, std::nullopt);
}
}
TEST(YamlGroupPriorityTest, assertYAMLGroupPriority)
{
const std::string groupPath = basePath + "group4";
EXPECT_EQ(systemLedMap.contains(groupPath), true);
phosphor::led::Layout::GroupLayout group = systemLedMap.at(groupPath);
EXPECT_EQ(group.priority, 2);
EXPECT_EQ(group.actionSet.size(), 2);
int found = 0;
for (auto& led : group.actionSet)
{
if (led.name == "led1")
{
EXPECT_EQ(led.action, Action::On);
EXPECT_EQ(led.priority, std::nullopt);
found++;
}
if (led.name == "led2")
{
EXPECT_EQ(led.action, Action::Off);
EXPECT_EQ(led.priority, std::nullopt);
found++;
}
}
EXPECT_EQ(found, group.actionSet.size());
}