• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
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 #define LOG_TAG "libhidl-gen-utils"
18 
19 #include <hidl-util/FqInstance.h>
20 #include <hidl-util/StringHelper.h>
21 
22 #include <gtest/gtest.h>
23 #include <vector>
24 
25 using ::android::FqInstance;
26 using ::android::StringHelper;
27 
28 class LibHidlGenUtilsTest : public ::testing::Test {};
29 
TEST_F(LibHidlGenUtilsTest,EndsWithTest)30 TEST_F(LibHidlGenUtilsTest, EndsWithTest) {
31     EXPECT_TRUE(StringHelper::EndsWith("", ""));
32     EXPECT_TRUE(StringHelper::EndsWith("a", ""));
33     EXPECT_TRUE(StringHelper::EndsWith("b", "b"));
34     EXPECT_TRUE(StringHelper::EndsWith("ab", "b"));
35     EXPECT_TRUE(StringHelper::EndsWith("ab", "ab"));
36     EXPECT_TRUE(StringHelper::EndsWith("abcd", "bcd"));
37     EXPECT_TRUE(StringHelper::EndsWith("abcd", "abcd"));
38     EXPECT_TRUE(StringHelper::EndsWith("abcdefghijk", "ijk"));
39     EXPECT_TRUE(StringHelper::EndsWith("abcdefghijk", "bcdefghijk"));
40 
41     EXPECT_FALSE(StringHelper::EndsWith("", "a"));
42     EXPECT_FALSE(StringHelper::EndsWith("b", "a"));
43     EXPECT_FALSE(StringHelper::EndsWith("abcd", "ab"));
44 }
45 
TEST_F(LibHidlGenUtilsTest,StartsWithTest)46 TEST_F(LibHidlGenUtilsTest, StartsWithTest) {
47     EXPECT_TRUE(StringHelper::StartsWith("", ""));
48     EXPECT_TRUE(StringHelper::StartsWith("a", ""));
49     EXPECT_TRUE(StringHelper::StartsWith("b", "b"));
50     EXPECT_TRUE(StringHelper::StartsWith("ab", "a"));
51     EXPECT_TRUE(StringHelper::StartsWith("ab", "ab"));
52     EXPECT_TRUE(StringHelper::StartsWith("abcd", "abc"));
53     EXPECT_TRUE(StringHelper::StartsWith("abcd", "abcd"));
54     EXPECT_TRUE(StringHelper::StartsWith("abcdefghijk", "abc"));
55     EXPECT_TRUE(StringHelper::StartsWith("abcdefghijk", "abcdefghij"));
56 
57     EXPECT_FALSE(StringHelper::StartsWith("", "a"));
58     EXPECT_FALSE(StringHelper::StartsWith("b", "a"));
59     EXPECT_FALSE(StringHelper::StartsWith("abcd", "cd"));
60 }
61 
TEST_F(LibHidlGenUtilsTest,Trim)62 TEST_F(LibHidlGenUtilsTest, Trim) {
63     EXPECT_EQ("", StringHelper::LTrim("", ""));
64     EXPECT_EQ("", StringHelper::LTrim("", "a"));
65     EXPECT_EQ("", StringHelper::LTrim("a", "a"));
66     EXPECT_EQ("a", StringHelper::LTrim("a", ""));
67     EXPECT_EQ("a", StringHelper::LTrim("a", "b"));
68     EXPECT_EQ("a", StringHelper::LTrim("ba", "b"));
69     EXPECT_EQ("f", StringHelper::LTrim("abcdef", "abcde"));
70     EXPECT_EQ("cdef", StringHelper::LTrim("abcdef", "ab"));
71     EXPECT_EQ("abcdef", StringHelper::LTrim("abcdef", ""));
72 
73     EXPECT_EQ("", StringHelper::RTrim("", ""));
74     EXPECT_EQ("", StringHelper::RTrim("", "a"));
75     EXPECT_EQ("", StringHelper::RTrim("a", "a"));
76     EXPECT_EQ("a", StringHelper::RTrim("a", ""));
77     EXPECT_EQ("a", StringHelper::RTrim("a", "b"));
78     EXPECT_EQ("a", StringHelper::RTrim("ab", "b"));
79     EXPECT_EQ("a", StringHelper::RTrim("abcdef", "bcdef"));
80     EXPECT_EQ("abcd", StringHelper::RTrim("abcdef", "ef"));
81     EXPECT_EQ("abcdef", StringHelper::RTrim("abcdef", ""));
82 }
83 
TEST_F(LibHidlGenUtilsTest,TrimAll)84 TEST_F(LibHidlGenUtilsTest, TrimAll) {
85     EXPECT_EQ("", StringHelper::LTrimAll("", ""));
86     EXPECT_EQ("", StringHelper::LTrimAll("", "a"));
87     EXPECT_EQ("", StringHelper::LTrimAll("", "ab"));
88     EXPECT_EQ("", StringHelper::LTrimAll("a", "a"));
89     EXPECT_EQ("", StringHelper::LTrimAll("aa", "a"));
90     EXPECT_EQ("b", StringHelper::LTrimAll("b", "a"));
91     EXPECT_EQ("b", StringHelper::LTrimAll("aaab", "a"));
92     EXPECT_EQ("c", StringHelper::LTrimAll("ababc", "ab"));
93     EXPECT_EQ("ac", StringHelper::LTrimAll("abac", "ab"));
94 
95     EXPECT_EQ("", StringHelper::RTrimAll("", ""));
96     EXPECT_EQ("", StringHelper::RTrimAll("", "a"));
97     EXPECT_EQ("", StringHelper::RTrimAll("", "ab"));
98     EXPECT_EQ("", StringHelper::RTrimAll("a", "a"));
99     EXPECT_EQ("", StringHelper::RTrimAll("aa", "a"));
100     EXPECT_EQ("b", StringHelper::RTrimAll("b", "a"));
101     EXPECT_EQ("b", StringHelper::RTrimAll("baaa", "a"));
102     EXPECT_EQ("c", StringHelper::RTrimAll("cabab", "ab"));
103     EXPECT_EQ("ca", StringHelper::RTrimAll("caba", "ba"));
104 }
105 
TEST_F(LibHidlGenUtilsTest,SplitString)106 TEST_F(LibHidlGenUtilsTest, SplitString) {
107     std::vector<std::string> components;
108 
109     StringHelper::SplitString("", '.', &components);
110     EXPECT_EQ(std::vector<std::string>({""}), components);
111     StringHelper::SplitString("a.", '.', &components);
112     EXPECT_EQ(std::vector<std::string>({"a", ""}), components);
113     StringHelper::SplitString(".a", '.', &components);
114     EXPECT_EQ(std::vector<std::string>({"", "a"}), components);
115     StringHelper::SplitString("..", '.', &components);
116     EXPECT_EQ(std::vector<std::string>({"", "", ""}), components);
117     StringHelper::SplitString("asdf.asdf", '.', &components);
118     EXPECT_EQ(std::vector<std::string>({"asdf", "asdf"}), components);
119 }
120 
TEST_F(LibHidlGenUtilsTest,JoinStrings)121 TEST_F(LibHidlGenUtilsTest, JoinStrings) {
122     EXPECT_EQ("", StringHelper::JoinStrings({}, ""));
123     EXPECT_EQ("", StringHelper::JoinStrings({}, "a"));
124     EXPECT_EQ("a", StringHelper::JoinStrings({"a"}, ""));
125     EXPECT_EQ("a,b", StringHelper::JoinStrings({"a", "b"}, ","));
126     EXPECT_EQ("ab,", StringHelper::JoinStrings({"ab", ""}, ","));
127     EXPECT_EQ(",ab", StringHelper::JoinStrings({"", "ab"}, ","));
128     EXPECT_EQ("a.,b", StringHelper::JoinStrings({"a", "b"}, ".,"));
129     EXPECT_EQ("a,b,c", StringHelper::JoinStrings({"a", "b", "c"}, ","));
130     EXPECT_EQ("abc.,def.,ghi", StringHelper::JoinStrings({"abc", "def", "ghi"}, ".,"));
131 }
132 
TEST_F(LibHidlGenUtilsTest,FqInstance1)133 TEST_F(LibHidlGenUtilsTest, FqInstance1) {
134     FqInstance e;
135     ASSERT_TRUE(e.setTo("android.hardware.foo@1.0::IFoo/instance"));
136     EXPECT_EQ("android.hardware.foo@1.0::IFoo/instance", e.string());
137     ASSERT_TRUE(e.hasPackage());
138     EXPECT_EQ("android.hardware.foo", e.getPackage());
139     ASSERT_TRUE(e.hasVersion());
140     EXPECT_EQ(1u, e.getMajorVersion());
141     EXPECT_EQ(0u, e.getMinorVersion());
142     EXPECT_EQ((std::make_pair<size_t, size_t>(1u, 0u)), e.getVersion());
143     ASSERT_TRUE(e.hasInterface());
144     EXPECT_EQ("IFoo", e.getInterface());
145     ASSERT_TRUE(e.hasInstance());
146     EXPECT_EQ("instance", e.getInstance());
147 }
148 
TEST_F(LibHidlGenUtilsTest,FqInstance2)149 TEST_F(LibHidlGenUtilsTest, FqInstance2) {
150     FqInstance e;
151     ASSERT_TRUE(e.setTo("@1.0::IFoo/instance"));
152     EXPECT_EQ("@1.0::IFoo/instance", e.string());
153     ASSERT_FALSE(e.hasPackage());
154     ASSERT_TRUE(e.hasVersion());
155     EXPECT_EQ((std::make_pair<size_t, size_t>(1u, 0u)), e.getVersion());
156     ASSERT_TRUE(e.hasInterface());
157     EXPECT_EQ("IFoo", e.getInterface());
158     ASSERT_TRUE(e.hasInstance());
159     EXPECT_EQ("instance", e.getInstance());
160 }
161 
TEST_F(LibHidlGenUtilsTest,FqInstance3)162 TEST_F(LibHidlGenUtilsTest, FqInstance3) {
163     FqInstance e;
164     ASSERT_TRUE(e.setTo("IFoo/instance"));
165     EXPECT_EQ("IFoo/instance", e.string());
166     ASSERT_FALSE(e.hasPackage());
167     ASSERT_FALSE(e.hasVersion());
168     ASSERT_TRUE(e.hasInterface());
169     EXPECT_EQ("IFoo", e.getInterface());
170     ASSERT_TRUE(e.hasInstance());
171     EXPECT_EQ("instance", e.getInstance());
172 }
173 
TEST_F(LibHidlGenUtilsTest,FqInstanceFqNameOnly)174 TEST_F(LibHidlGenUtilsTest, FqInstanceFqNameOnly) {
175     FqInstance e;
176     for (auto testString :
177          {"android.hardware.foo@1.0::IFoo.Type", "@1.0::IFoo.Type", "android.hardware.foo@1.0",
178           "IFoo.Type", "Type", "android.hardware.foo@1.0::IFoo.Type:MY_ENUM_VALUE",
179           "@1.0::IFoo.Type:MY_ENUM_VALUE", "IFoo.Type:MY_ENUM_VALUE"}) {
180         ASSERT_TRUE(e.setTo(testString));
181         EXPECT_EQ(testString, e.string());
182         ASSERT_FALSE(e.hasInstance());
183     };
184 }
185 
TEST_F(LibHidlGenUtilsTest,FqInstanceIdentifier)186 TEST_F(LibHidlGenUtilsTest, FqInstanceIdentifier) {
187     FqInstance e;
188     ASSERT_TRUE(e.setTo("Type"));
189     EXPECT_EQ("Type", e.string());
190     ASSERT_FALSE(e.hasInstance());
191 }
192 
main(int argc,char ** argv)193 int main(int argc, char **argv) {
194     ::testing::InitGoogleTest(&argc, argv);
195     return RUN_ALL_TESTS();
196 }
197