1695b41eeSopenharmony_ci// Copyright 2017 Google Inc. All Rights Reserved.
2695b41eeSopenharmony_ci//
3695b41eeSopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License");
4695b41eeSopenharmony_ci// you may not use this file except in compliance with the License.
5695b41eeSopenharmony_ci// You may obtain a copy of the License at
6695b41eeSopenharmony_ci//
7695b41eeSopenharmony_ci//     http://www.apache.org/licenses/LICENSE-2.0
8695b41eeSopenharmony_ci//
9695b41eeSopenharmony_ci// Unless required by applicable law or agreed to in writing, software
10695b41eeSopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS,
11695b41eeSopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12695b41eeSopenharmony_ci// See the License for the specific language governing permissions and
13695b41eeSopenharmony_ci// limitations under the License.
14695b41eeSopenharmony_ci
15695b41eeSopenharmony_ci#include "string_piece_util.h"
16695b41eeSopenharmony_ci
17695b41eeSopenharmony_ci#include "test.h"
18695b41eeSopenharmony_ci
19695b41eeSopenharmony_ciusing namespace std;
20695b41eeSopenharmony_ci
21695b41eeSopenharmony_ciTEST(StringPieceUtilTest, SplitStringPiece) {
22695b41eeSopenharmony_ci  {
23695b41eeSopenharmony_ci    string input("a:b:c");
24695b41eeSopenharmony_ci    vector<StringPiece> list = SplitStringPiece(input, ':');
25695b41eeSopenharmony_ci
26695b41eeSopenharmony_ci    EXPECT_EQ(list.size(), 3);
27695b41eeSopenharmony_ci
28695b41eeSopenharmony_ci    EXPECT_EQ(list[0], "a");
29695b41eeSopenharmony_ci    EXPECT_EQ(list[1], "b");
30695b41eeSopenharmony_ci    EXPECT_EQ(list[2], "c");
31695b41eeSopenharmony_ci  }
32695b41eeSopenharmony_ci
33695b41eeSopenharmony_ci  {
34695b41eeSopenharmony_ci    string empty;
35695b41eeSopenharmony_ci    vector<StringPiece> list = SplitStringPiece(empty, ':');
36695b41eeSopenharmony_ci
37695b41eeSopenharmony_ci    EXPECT_EQ(list.size(), 1);
38695b41eeSopenharmony_ci
39695b41eeSopenharmony_ci    EXPECT_EQ(list[0], "");
40695b41eeSopenharmony_ci  }
41695b41eeSopenharmony_ci
42695b41eeSopenharmony_ci  {
43695b41eeSopenharmony_ci    string one("a");
44695b41eeSopenharmony_ci    vector<StringPiece> list = SplitStringPiece(one, ':');
45695b41eeSopenharmony_ci
46695b41eeSopenharmony_ci    EXPECT_EQ(list.size(), 1);
47695b41eeSopenharmony_ci
48695b41eeSopenharmony_ci    EXPECT_EQ(list[0], "a");
49695b41eeSopenharmony_ci  }
50695b41eeSopenharmony_ci
51695b41eeSopenharmony_ci  {
52695b41eeSopenharmony_ci    string sep_only(":");
53695b41eeSopenharmony_ci    vector<StringPiece> list = SplitStringPiece(sep_only, ':');
54695b41eeSopenharmony_ci
55695b41eeSopenharmony_ci    EXPECT_EQ(list.size(), 2);
56695b41eeSopenharmony_ci
57695b41eeSopenharmony_ci    EXPECT_EQ(list[0], "");
58695b41eeSopenharmony_ci    EXPECT_EQ(list[1], "");
59695b41eeSopenharmony_ci  }
60695b41eeSopenharmony_ci
61695b41eeSopenharmony_ci  {
62695b41eeSopenharmony_ci    string sep(":a:b:c:");
63695b41eeSopenharmony_ci    vector<StringPiece> list = SplitStringPiece(sep, ':');
64695b41eeSopenharmony_ci
65695b41eeSopenharmony_ci    EXPECT_EQ(list.size(), 5);
66695b41eeSopenharmony_ci
67695b41eeSopenharmony_ci    EXPECT_EQ(list[0], "");
68695b41eeSopenharmony_ci    EXPECT_EQ(list[1], "a");
69695b41eeSopenharmony_ci    EXPECT_EQ(list[2], "b");
70695b41eeSopenharmony_ci    EXPECT_EQ(list[3], "c");
71695b41eeSopenharmony_ci    EXPECT_EQ(list[4], "");
72695b41eeSopenharmony_ci  }
73695b41eeSopenharmony_ci}
74695b41eeSopenharmony_ci
75695b41eeSopenharmony_ciTEST(StringPieceUtilTest, JoinStringPiece) {
76695b41eeSopenharmony_ci  {
77695b41eeSopenharmony_ci    string input("a:b:c");
78695b41eeSopenharmony_ci    vector<StringPiece> list = SplitStringPiece(input, ':');
79695b41eeSopenharmony_ci
80695b41eeSopenharmony_ci    EXPECT_EQ("a:b:c", JoinStringPiece(list, ':'));
81695b41eeSopenharmony_ci    EXPECT_EQ("a/b/c", JoinStringPiece(list, '/'));
82695b41eeSopenharmony_ci  }
83695b41eeSopenharmony_ci
84695b41eeSopenharmony_ci  {
85695b41eeSopenharmony_ci    string empty;
86695b41eeSopenharmony_ci    vector<StringPiece> list = SplitStringPiece(empty, ':');
87695b41eeSopenharmony_ci
88695b41eeSopenharmony_ci    EXPECT_EQ("", JoinStringPiece(list, ':'));
89695b41eeSopenharmony_ci  }
90695b41eeSopenharmony_ci
91695b41eeSopenharmony_ci  {
92695b41eeSopenharmony_ci    vector<StringPiece> empty_list;
93695b41eeSopenharmony_ci
94695b41eeSopenharmony_ci    EXPECT_EQ("", JoinStringPiece(empty_list, ':'));
95695b41eeSopenharmony_ci  }
96695b41eeSopenharmony_ci
97695b41eeSopenharmony_ci  {
98695b41eeSopenharmony_ci    string one("a");
99695b41eeSopenharmony_ci    vector<StringPiece> single_list = SplitStringPiece(one, ':');
100695b41eeSopenharmony_ci
101695b41eeSopenharmony_ci    EXPECT_EQ("a", JoinStringPiece(single_list, ':'));
102695b41eeSopenharmony_ci  }
103695b41eeSopenharmony_ci
104695b41eeSopenharmony_ci  {
105695b41eeSopenharmony_ci    string sep(":a:b:c:");
106695b41eeSopenharmony_ci    vector<StringPiece> list = SplitStringPiece(sep, ':');
107695b41eeSopenharmony_ci
108695b41eeSopenharmony_ci    EXPECT_EQ(":a:b:c:", JoinStringPiece(list, ':'));
109695b41eeSopenharmony_ci  }
110695b41eeSopenharmony_ci}
111695b41eeSopenharmony_ci
112695b41eeSopenharmony_ciTEST(StringPieceUtilTest, ToLowerASCII) {
113695b41eeSopenharmony_ci  EXPECT_EQ('a', ToLowerASCII('A'));
114695b41eeSopenharmony_ci  EXPECT_EQ('z', ToLowerASCII('Z'));
115695b41eeSopenharmony_ci  EXPECT_EQ('a', ToLowerASCII('a'));
116695b41eeSopenharmony_ci  EXPECT_EQ('z', ToLowerASCII('z'));
117695b41eeSopenharmony_ci  EXPECT_EQ('/', ToLowerASCII('/'));
118695b41eeSopenharmony_ci  EXPECT_EQ('1', ToLowerASCII('1'));
119695b41eeSopenharmony_ci}
120695b41eeSopenharmony_ci
121695b41eeSopenharmony_ciTEST(StringPieceUtilTest, EqualsCaseInsensitiveASCII) {
122695b41eeSopenharmony_ci  EXPECT_TRUE(EqualsCaseInsensitiveASCII("abc", "abc"));
123695b41eeSopenharmony_ci  EXPECT_TRUE(EqualsCaseInsensitiveASCII("abc", "ABC"));
124695b41eeSopenharmony_ci  EXPECT_TRUE(EqualsCaseInsensitiveASCII("abc", "aBc"));
125695b41eeSopenharmony_ci  EXPECT_TRUE(EqualsCaseInsensitiveASCII("AbC", "aBc"));
126695b41eeSopenharmony_ci  EXPECT_TRUE(EqualsCaseInsensitiveASCII("", ""));
127695b41eeSopenharmony_ci
128695b41eeSopenharmony_ci  EXPECT_FALSE(EqualsCaseInsensitiveASCII("a", "ac"));
129695b41eeSopenharmony_ci  EXPECT_FALSE(EqualsCaseInsensitiveASCII("/", "\\"));
130695b41eeSopenharmony_ci  EXPECT_FALSE(EqualsCaseInsensitiveASCII("1", "10"));
131695b41eeSopenharmony_ci}
132