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