• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 Google LLC
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 //     https://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 "src/base/string_utils.h"
16 
17 #include <gtest/gtest.h>
18 
19 #include <list>
20 #include <string>
21 #include <vector>
22 
23 namespace astc_codec {
24 namespace base {
25 
TEST(StringUtils,Split)26 TEST(StringUtils, Split) {
27   std::vector<std::string> results;
28 
29   auto testFunc = [&results](std::string&& s) {
30     results.push_back(std::move(s));
31   };
32 
33   Split("", "abc", testFunc);
34   EXPECT_EQ(results.size(), 1);
35 
36   Split("abc", "", testFunc);
37   EXPECT_EQ(results.size(), 1);
38 
39   results.clear();
40   Split("abc", "a", testFunc);
41   EXPECT_EQ(results.size(), 2);
42   EXPECT_EQ(results[0], "");
43   EXPECT_EQ(results[1], "bc");
44 
45   results.clear();
46   Split("aaa", "a", testFunc);
47   EXPECT_EQ(4, results.size());
48   EXPECT_EQ("", results[0]);
49   EXPECT_EQ("", results[1]);
50   EXPECT_EQ("", results[2]);
51   EXPECT_EQ("", results[3]);
52 
53   results.clear();
54   Split("1a2a3a4", "a", testFunc);
55   EXPECT_EQ(4, results.size());
56   EXPECT_EQ("1", results[0]);
57   EXPECT_EQ("2", results[1]);
58   EXPECT_EQ("3", results[2]);
59   EXPECT_EQ("4", results[3]);
60 
61   results.clear();
62   Split("1a2aa3a4", "a", testFunc);
63   EXPECT_EQ(5, results.size());
64   EXPECT_EQ("1", results[0]);
65   EXPECT_EQ("2", results[1]);
66   EXPECT_EQ("", results[2]);
67   EXPECT_EQ("3", results[3]);
68   EXPECT_EQ("4", results[4]);
69 
70   results.clear();
71   Split("The quick brown fox jumped over the lazy dog",
72         " ", testFunc);
73   EXPECT_EQ(9, results.size());
74   EXPECT_EQ("The", results[0]);
75   EXPECT_EQ("quick", results[1]);
76   EXPECT_EQ("brown", results[2]);
77   EXPECT_EQ("fox", results[3]);
78   EXPECT_EQ("jumped", results[4]);
79   EXPECT_EQ("over", results[5]);
80   EXPECT_EQ("the", results[6]);
81   EXPECT_EQ("lazy", results[7]);
82   EXPECT_EQ("dog", results[8]);
83 
84   results.clear();
85   Split("a; b; c; d", "; ", testFunc);
86   EXPECT_EQ(4, results.size());
87   EXPECT_EQ("a", results[0]);
88   EXPECT_EQ("b", results[1]);
89   EXPECT_EQ("c", results[2]);
90   EXPECT_EQ("d", results[3]);
91 }
92 
TEST(StringUtils,ParseInt32)93 TEST(StringUtils, ParseInt32) {
94   EXPECT_EQ(ParseInt32("0", -1), 0);
95   EXPECT_EQ(ParseInt32("100", -1), 100);
96   EXPECT_EQ(ParseInt32("-100", -1), -100);
97 
98   EXPECT_EQ(ParseInt32("", -1), -1);
99   EXPECT_EQ(ParseInt32("a", -1), -1);
100   EXPECT_EQ(ParseInt32("10x1", -1), 10);
101 
102   EXPECT_EQ(ParseInt32("2147483647", -1), 2147483647);
103   EXPECT_EQ(ParseInt32("2147483648", -1), 2147483647);
104 
105   EXPECT_EQ(ParseInt32("-2147483648", -1), -2147483648);
106   EXPECT_EQ(ParseInt32("-2147483649", -1), -2147483648);
107 }
108 
109 }  // namespace base
110 }  // namespace astc_codec
111