1 /**
2  * Copyright © 2024 9elements
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "interfaces/internal_interface.hpp"
18 #include "sysfs.hpp"
19 
20 #include <gtest/gtest.h>
21 
22 using namespace phosphor::led;
23 
runtest(const std::string & name)24 static LedDescr runtest(const std::string& name)
25 {
26     std::string path = devParent + name;
27     SysfsLed led(path);
28     return led.getLedDescr();
29 }
30 
TEST(LEDDescr,Has4PartsInvalid)31 TEST(LEDDescr, Has4PartsInvalid)
32 {
33     LedDescr d = runtest("devicename:color:function:part4");
34 
35     ASSERT_EQ("devicename", d.devicename);
36     ASSERT_EQ("color", d.color);
37     ASSERT_EQ("function", d.function);
38 }
39 
TEST(LEDDescr,Has3Parts)40 TEST(LEDDescr, Has3Parts)
41 {
42     LedDescr d = runtest("devicename:color:function");
43 
44     ASSERT_EQ("devicename", d.devicename);
45     ASSERT_EQ("color", d.color);
46     ASSERT_EQ("function", d.function);
47 }
48 
TEST(LEDDescr,Has2PartsColorFunction)49 TEST(LEDDescr, Has2PartsColorFunction)
50 {
51     LedDescr d = runtest("red:fault");
52 
53     ASSERT_EQ(std::nullopt, d.devicename);
54     ASSERT_EQ("red", d.color);
55     ASSERT_EQ("fault", d.function);
56 }
57 
TEST(LEDDescr,Has2PartsDevicenameFunction)58 TEST(LEDDescr, Has2PartsDevicenameFunction)
59 {
60     LedDescr d = runtest("input9::capslock");
61 
62     ASSERT_EQ("input9", d.devicename);
63     ASSERT_EQ(std::nullopt, d.color);
64     ASSERT_EQ("capslock", d.function);
65 }
66 
TEST(LEDDescr,Has1PartColor)67 TEST(LEDDescr, Has1PartColor)
68 {
69     LedDescr d = runtest("green:");
70 
71     ASSERT_EQ(std::nullopt, d.devicename);
72     ASSERT_EQ("green", d.color);
73     ASSERT_EQ(std::nullopt, d.function);
74 }
75 
TEST(LEDDescr,Has1PartFunction)76 TEST(LEDDescr, Has1PartFunction)
77 {
78     LedDescr d = runtest(":boot");
79 
80     ASSERT_EQ(std::nullopt, d.devicename);
81     ASSERT_EQ(std::nullopt, d.color);
82     ASSERT_EQ("boot", d.function);
83 }
84 
TEST(LEDDescr,Has1PartLabel)85 TEST(LEDDescr, Has1PartLabel)
86 {
87     LedDescr d = runtest("identify");
88 
89     ASSERT_EQ("identify", d.devicename);
90     ASSERT_EQ(std::nullopt, d.color);
91     ASSERT_EQ(std::nullopt, d.function);
92 }
93