github.com/maruel/nin@v0.0.0-20220112143044-f35891e3ce7e/src/string_piece_util_test.cc (about)

     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  
    19  using namespace std;
    20  
    21  TEST(StringPieceUtilTest, SplitStringPiece) {
    22    {
    23      string input("a:b:c");
    24      vector<StringPiece> list = SplitStringPiece(input, ':');
    25  
    26      EXPECT_EQ(list.size(), 3);
    27  
    28      EXPECT_EQ(list[0], "a");
    29      EXPECT_EQ(list[1], "b");
    30      EXPECT_EQ(list[2], "c");
    31    }
    32  
    33    {
    34      string empty;
    35      vector<StringPiece> list = SplitStringPiece(empty, ':');
    36  
    37      EXPECT_EQ(list.size(), 1);
    38  
    39      EXPECT_EQ(list[0], "");
    40    }
    41  
    42    {
    43      string one("a");
    44      vector<StringPiece> list = SplitStringPiece(one, ':');
    45  
    46      EXPECT_EQ(list.size(), 1);
    47  
    48      EXPECT_EQ(list[0], "a");
    49    }
    50  
    51    {
    52      string sep_only(":");
    53      vector<StringPiece> list = SplitStringPiece(sep_only, ':');
    54  
    55      EXPECT_EQ(list.size(), 2);
    56  
    57      EXPECT_EQ(list[0], "");
    58      EXPECT_EQ(list[1], "");
    59    }
    60  
    61    {
    62      string sep(":a:b:c:");
    63      vector<StringPiece> list = SplitStringPiece(sep, ':');
    64  
    65      EXPECT_EQ(list.size(), 5);
    66  
    67      EXPECT_EQ(list[0], "");
    68      EXPECT_EQ(list[1], "a");
    69      EXPECT_EQ(list[2], "b");
    70      EXPECT_EQ(list[3], "c");
    71      EXPECT_EQ(list[4], "");
    72    }
    73  }
    74  
    75  TEST(StringPieceUtilTest, JoinStringPiece) {
    76    {
    77      string input("a:b:c");
    78      vector<StringPiece> list = SplitStringPiece(input, ':');
    79  
    80      EXPECT_EQ("a:b:c", JoinStringPiece(list, ':'));
    81      EXPECT_EQ("a/b/c", JoinStringPiece(list, '/'));
    82    }
    83  
    84    {
    85      string empty;
    86      vector<StringPiece> list = SplitStringPiece(empty, ':');
    87  
    88      EXPECT_EQ("", JoinStringPiece(list, ':'));
    89    }
    90  
    91    {
    92      vector<StringPiece> empty_list;
    93  
    94      EXPECT_EQ("", JoinStringPiece(empty_list, ':'));
    95    }
    96  
    97    {
    98      string one("a");
    99      vector<StringPiece> single_list = SplitStringPiece(one, ':');
   100  
   101      EXPECT_EQ("a", JoinStringPiece(single_list, ':'));
   102    }
   103  
   104    {
   105      string sep(":a:b:c:");
   106      vector<StringPiece> list = SplitStringPiece(sep, ':');
   107  
   108      EXPECT_EQ(":a:b:c:", JoinStringPiece(list, ':'));
   109    }
   110  }
   111  
   112  TEST(StringPieceUtilTest, ToLowerASCII) {
   113    EXPECT_EQ('a', ToLowerASCII('A'));
   114    EXPECT_EQ('z', ToLowerASCII('Z'));
   115    EXPECT_EQ('a', ToLowerASCII('a'));
   116    EXPECT_EQ('z', ToLowerASCII('z'));
   117    EXPECT_EQ('/', ToLowerASCII('/'));
   118    EXPECT_EQ('1', ToLowerASCII('1'));
   119  }
   120  
   121  TEST(StringPieceUtilTest, EqualsCaseInsensitiveASCII) {
   122    EXPECT_TRUE(EqualsCaseInsensitiveASCII("abc", "abc"));
   123    EXPECT_TRUE(EqualsCaseInsensitiveASCII("abc", "ABC"));
   124    EXPECT_TRUE(EqualsCaseInsensitiveASCII("abc", "aBc"));
   125    EXPECT_TRUE(EqualsCaseInsensitiveASCII("AbC", "aBc"));
   126    EXPECT_TRUE(EqualsCaseInsensitiveASCII("", ""));
   127  
   128    EXPECT_FALSE(EqualsCaseInsensitiveASCII("a", "ac"));
   129    EXPECT_FALSE(EqualsCaseInsensitiveASCII("/", "\\"));
   130    EXPECT_FALSE(EqualsCaseInsensitiveASCII("1", "10"));
   131  }