• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2017 Google Inc. All Rights Reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #include "string_piece_util.h"
16 
17 #include "test.h"
18 
TEST(StringPieceUtilTest,SplitStringPiece)19 TEST(StringPieceUtilTest, SplitStringPiece) {
20   {
21     string input("a:b:c");
22     vector<StringPiece> list = SplitStringPiece(input, ':');
23 
24     EXPECT_EQ(list.size(), 3);
25 
26     EXPECT_EQ(list[0], "a");
27     EXPECT_EQ(list[1], "b");
28     EXPECT_EQ(list[2], "c");
29   }
30 
31   {
32     string empty("");
33     vector<StringPiece> list = SplitStringPiece(empty, ':');
34 
35     EXPECT_EQ(list.size(), 1);
36 
37     EXPECT_EQ(list[0], "");
38   }
39 
40   {
41     string one("a");
42     vector<StringPiece> list = SplitStringPiece(one, ':');
43 
44     EXPECT_EQ(list.size(), 1);
45 
46     EXPECT_EQ(list[0], "a");
47   }
48 
49   {
50     string sep_only(":");
51     vector<StringPiece> list = SplitStringPiece(sep_only, ':');
52 
53     EXPECT_EQ(list.size(), 2);
54 
55     EXPECT_EQ(list[0], "");
56     EXPECT_EQ(list[1], "");
57   }
58 
59   {
60     string sep(":a:b:c:");
61     vector<StringPiece> list = SplitStringPiece(sep, ':');
62 
63     EXPECT_EQ(list.size(), 5);
64 
65     EXPECT_EQ(list[0], "");
66     EXPECT_EQ(list[1], "a");
67     EXPECT_EQ(list[2], "b");
68     EXPECT_EQ(list[3], "c");
69     EXPECT_EQ(list[4], "");
70   }
71 }
72 
TEST(StringPieceUtilTest,JoinStringPiece)73 TEST(StringPieceUtilTest, JoinStringPiece) {
74   {
75     string input("a:b:c");
76     vector<StringPiece> list = SplitStringPiece(input, ':');
77 
78     EXPECT_EQ("a:b:c", JoinStringPiece(list, ':'));
79     EXPECT_EQ("a/b/c", JoinStringPiece(list, '/'));
80   }
81 
82   {
83     string empty("");
84     vector<StringPiece> list = SplitStringPiece(empty, ':');
85 
86     EXPECT_EQ("", JoinStringPiece(list, ':'));
87   }
88 
89   {
90     vector<StringPiece> empty_list;
91 
92     EXPECT_EQ("", JoinStringPiece(empty_list, ':'));
93   }
94 
95   {
96     string one("a");
97     vector<StringPiece> single_list = SplitStringPiece(one, ':');
98 
99     EXPECT_EQ("a", JoinStringPiece(single_list, ':'));
100   }
101 
102   {
103     string sep(":a:b:c:");
104     vector<StringPiece> list = SplitStringPiece(sep, ':');
105 
106     EXPECT_EQ(":a:b:c:", JoinStringPiece(list, ':'));
107   }
108 }
109 
TEST(StringPieceUtilTest,ToLowerASCII)110 TEST(StringPieceUtilTest, ToLowerASCII) {
111   EXPECT_EQ('a', ToLowerASCII('A'));
112   EXPECT_EQ('z', ToLowerASCII('Z'));
113   EXPECT_EQ('a', ToLowerASCII('a'));
114   EXPECT_EQ('z', ToLowerASCII('z'));
115   EXPECT_EQ('/', ToLowerASCII('/'));
116   EXPECT_EQ('1', ToLowerASCII('1'));
117 }
118 
TEST(StringPieceUtilTest,EqualsCaseInsensitiveASCII)119 TEST(StringPieceUtilTest, EqualsCaseInsensitiveASCII) {
120   EXPECT_TRUE(EqualsCaseInsensitiveASCII("abc", "abc"));
121   EXPECT_TRUE(EqualsCaseInsensitiveASCII("abc", "ABC"));
122   EXPECT_TRUE(EqualsCaseInsensitiveASCII("abc", "aBc"));
123   EXPECT_TRUE(EqualsCaseInsensitiveASCII("AbC", "aBc"));
124   EXPECT_TRUE(EqualsCaseInsensitiveASCII("", ""));
125 
126   EXPECT_FALSE(EqualsCaseInsensitiveASCII("a", "ac"));
127   EXPECT_FALSE(EqualsCaseInsensitiveASCII("/", "\\"));
128   EXPECT_FALSE(EqualsCaseInsensitiveASCII("1", "10"));
129 }
130