1*def5f5a2SGeorge Liu #include "json-config.hpp"
2*def5f5a2SGeorge Liu 
3*def5f5a2SGeorge Liu #include <gtest/gtest.h>
4*def5f5a2SGeorge Liu 
5*def5f5a2SGeorge Liu TEST(loadJsonConfig, testGoodPath)
6*def5f5a2SGeorge Liu {
7*def5f5a2SGeorge Liu     static constexpr auto jsonPath = "config/led-group-config.json";
8*def5f5a2SGeorge Liu     LedMap ledMap = loadJsonConfig(jsonPath);
9*def5f5a2SGeorge Liu 
10*def5f5a2SGeorge Liu     std::string objPath = "/xyz/openbmc_project/led/groups";
11*def5f5a2SGeorge Liu     std::string bmcBooted = objPath + "/bmc_booted";
12*def5f5a2SGeorge Liu     std::string powerOn = objPath + "/power_on";
13*def5f5a2SGeorge Liu     std::string enclosureIdentify = objPath + "/enclosure_identify";
14*def5f5a2SGeorge Liu 
15*def5f5a2SGeorge Liu     ASSERT_NE(ledMap.find(bmcBooted), ledMap.end());
16*def5f5a2SGeorge Liu     ASSERT_NE(ledMap.find(powerOn), ledMap.end());
17*def5f5a2SGeorge Liu     ASSERT_NE(ledMap.find(enclosureIdentify), ledMap.end());
18*def5f5a2SGeorge Liu 
19*def5f5a2SGeorge Liu     LedAction bmcBootedActions = ledMap.at(bmcBooted);
20*def5f5a2SGeorge Liu     LedAction powerOnActions = ledMap.at(powerOn);
21*def5f5a2SGeorge Liu     LedAction enclosureIdentifyActions = ledMap.at(enclosureIdentify);
22*def5f5a2SGeorge Liu 
23*def5f5a2SGeorge Liu     for (const auto& group : bmcBootedActions)
24*def5f5a2SGeorge Liu     {
25*def5f5a2SGeorge Liu         ASSERT_EQ(group.name, "heartbeat");
26*def5f5a2SGeorge Liu         ASSERT_EQ(group.action, phosphor::led::Layout::On);
27*def5f5a2SGeorge Liu         ASSERT_EQ(group.dutyOn, 50);
28*def5f5a2SGeorge Liu         ASSERT_EQ(group.period, 0);
29*def5f5a2SGeorge Liu         ASSERT_EQ(group.priority, phosphor::led::Layout::Blink);
30*def5f5a2SGeorge Liu     }
31*def5f5a2SGeorge Liu 
32*def5f5a2SGeorge Liu     for (const auto& group : powerOnActions)
33*def5f5a2SGeorge Liu     {
34*def5f5a2SGeorge Liu         ASSERT_EQ(group.name, "power");
35*def5f5a2SGeorge Liu         ASSERT_EQ(group.action, phosphor::led::Layout::On);
36*def5f5a2SGeorge Liu         ASSERT_EQ(group.dutyOn, 50);
37*def5f5a2SGeorge Liu         ASSERT_EQ(group.period, 0);
38*def5f5a2SGeorge Liu         ASSERT_EQ(group.priority, phosphor::led::Layout::On);
39*def5f5a2SGeorge Liu     }
40*def5f5a2SGeorge Liu 
41*def5f5a2SGeorge Liu     for (const auto& group : enclosureIdentifyActions)
42*def5f5a2SGeorge Liu     {
43*def5f5a2SGeorge Liu         if (group.name == "front_id")
44*def5f5a2SGeorge Liu         {
45*def5f5a2SGeorge Liu             ASSERT_EQ(group.action, phosphor::led::Layout::Blink);
46*def5f5a2SGeorge Liu             ASSERT_EQ(group.dutyOn, 50);
47*def5f5a2SGeorge Liu             ASSERT_EQ(group.period, 1000);
48*def5f5a2SGeorge Liu             ASSERT_EQ(group.priority, phosphor::led::Layout::Blink);
49*def5f5a2SGeorge Liu         }
50*def5f5a2SGeorge Liu         else if (group.name == "rear_id")
51*def5f5a2SGeorge Liu         {
52*def5f5a2SGeorge Liu             ASSERT_EQ(group.action, phosphor::led::Layout::Blink);
53*def5f5a2SGeorge Liu             ASSERT_EQ(group.dutyOn, 50);
54*def5f5a2SGeorge Liu             ASSERT_EQ(group.period, 1000);
55*def5f5a2SGeorge Liu             ASSERT_EQ(group.priority, phosphor::led::Layout::Blink);
56*def5f5a2SGeorge Liu         }
57*def5f5a2SGeorge Liu         else
58*def5f5a2SGeorge Liu         {
59*def5f5a2SGeorge Liu             ASSERT_TRUE(false);
60*def5f5a2SGeorge Liu         }
61*def5f5a2SGeorge Liu     }
62*def5f5a2SGeorge Liu }
63*def5f5a2SGeorge Liu 
64*def5f5a2SGeorge Liu TEST(loadJsonConfig, testBadPath)
65*def5f5a2SGeorge Liu {
66*def5f5a2SGeorge Liu     static constexpr auto jsonPath = "config/led-group-config-malformed.json";
67*def5f5a2SGeorge Liu     ASSERT_THROW(loadJsonConfig(jsonPath), std::exception);
68*def5f5a2SGeorge Liu }