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