Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: base/strings/string_util_unittest.cc

Issue 2733473002: Added regression test for base::JoinString given a null StringPiece. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/strings/string_util_unittest.cc
diff --git a/base/strings/string_util_unittest.cc b/base/strings/string_util_unittest.cc
index 6c054f8327e4718366c19fe5e8dd5f0f0778667c..6ac307ec2b4f1113d53af03ef4a655f2b1f32657 100644
--- a/base/strings/string_util_unittest.cc
+++ b/base/strings/string_util_unittest.cc
@@ -676,6 +676,10 @@ TEST(StringUtilTest, JoinString) {
std::vector<std::string> parts;
EXPECT_EQ(std::string(), JoinString(parts, separator));
+ parts.push_back(std::string());
+ EXPECT_EQ(std::string(), JoinString(parts, separator));
+ parts.clear();
+
parts.push_back("a");
EXPECT_EQ("a", JoinString(parts, separator));
@@ -694,6 +698,10 @@ TEST(StringUtilTest, JoinString16) {
std::vector<string16> parts;
EXPECT_EQ(string16(), JoinString(parts, separator));
+ parts.push_back(string16());
+ EXPECT_EQ(string16(), JoinString(parts, separator));
+ parts.clear();
+
parts.push_back(ASCIIToUTF16("a"));
EXPECT_EQ(ASCIIToUTF16("a"), JoinString(parts, separator));
@@ -709,8 +717,13 @@ TEST(StringUtilTest, JoinString16) {
TEST(StringUtilTest, JoinStringPiece) {
std::string separator(", ");
- std::vector<base::StringPiece> parts;
- EXPECT_EQ(base::StringPiece(), JoinString(parts, separator));
+ std::vector<StringPiece> parts;
+ EXPECT_EQ(std::string(), JoinString(parts, separator));
+
+ // Test empty first part (https://crbug.com/698073).
+ parts.push_back(StringPiece());
+ EXPECT_EQ(std::string(), JoinString(parts, separator));
+ parts.clear();
parts.push_back("a");
EXPECT_EQ("a", JoinString(parts, separator));
@@ -719,7 +732,7 @@ TEST(StringUtilTest, JoinStringPiece) {
parts.push_back("c");
EXPECT_EQ("a, b, c", JoinString(parts, separator));
- parts.push_back(base::StringPiece());
+ parts.push_back(StringPiece());
EXPECT_EQ("a, b, c, ", JoinString(parts, separator));
parts.push_back(" ");
EXPECT_EQ("a|b|c|| ", JoinString(parts, "|"));
@@ -727,8 +740,13 @@ TEST(StringUtilTest, JoinStringPiece) {
TEST(StringUtilTest, JoinStringPiece16) {
string16 separator = ASCIIToUTF16(", ");
- std::vector<base::StringPiece16> parts;
- EXPECT_EQ(base::StringPiece16(), JoinString(parts, separator));
+ std::vector<StringPiece16> parts;
+ EXPECT_EQ(string16(), JoinString(parts, separator));
+
+ // Test empty first part (https://crbug.com/698073).
+ parts.push_back(StringPiece16());
+ EXPECT_EQ(string16(), JoinString(parts, separator));
+ parts.clear();
const string16 kA = ASCIIToUTF16("a");
parts.push_back(kA);
@@ -740,7 +758,7 @@ TEST(StringUtilTest, JoinStringPiece16) {
parts.push_back(kC);
EXPECT_EQ(ASCIIToUTF16("a, b, c"), JoinString(parts, separator));
- parts.push_back(base::StringPiece16());
+ parts.push_back(StringPiece16());
EXPECT_EQ(ASCIIToUTF16("a, b, c, "), JoinString(parts, separator));
const string16 kSpace = ASCIIToUTF16(" ");
parts.push_back(kSpace);
@@ -749,13 +767,16 @@ TEST(StringUtilTest, JoinStringPiece16) {
TEST(StringUtilTest, JoinStringInitializerList) {
std::string separator(", ");
- EXPECT_EQ(base::StringPiece(), JoinString({}, separator));
+ EXPECT_EQ(std::string(), JoinString({}, separator));
+
+ // Test empty first part (https://crbug.com/698073).
+ EXPECT_EQ(std::string(), JoinString({StringPiece()}, separator));
// With const char*s.
EXPECT_EQ("a", JoinString({"a"}, separator));
EXPECT_EQ("a, b, c", JoinString({"a", "b", "c"}, separator));
- EXPECT_EQ("a, b, c, ", JoinString({"a", "b", "c", ""}, separator));
- EXPECT_EQ("a|b|c|| ", JoinString({"a", "b", "c", "", " "}, "|"));
+ EXPECT_EQ("a, b, c, ", JoinString({"a", "b", "c", StringPiece()}, separator));
+ EXPECT_EQ("a|b|c|| ", JoinString({"a", "b", "c", StringPiece(), " "}, "|"));
// With std::strings.
const std::string kA = "a";
@@ -770,7 +791,10 @@ TEST(StringUtilTest, JoinStringInitializerList) {
TEST(StringUtilTest, JoinStringInitializerList16) {
string16 separator = ASCIIToUTF16(", ");
- EXPECT_EQ(base::StringPiece16(), JoinString({}, separator));
+ EXPECT_EQ(string16(), JoinString({}, separator));
+
+ // Test empty first part (https://crbug.com/698073).
+ EXPECT_EQ(string16(), JoinString({StringPiece16()}, separator));
// With string16s.
const string16 kA = ASCIIToUTF16("a");
@@ -780,12 +804,12 @@ TEST(StringUtilTest, JoinStringInitializerList16) {
const string16 kC = ASCIIToUTF16("c");
EXPECT_EQ(ASCIIToUTF16("a, b, c"), JoinString({kA, kB, kC}, separator));
- const string16 kEmpty = ASCIIToUTF16("");
EXPECT_EQ(ASCIIToUTF16("a, b, c, "),
- JoinString({kA, kB, kC, kEmpty}, separator));
+ JoinString({kA, kB, kC, StringPiece16()}, separator));
dcheng 2017/03/03 09:11:08 This doesn't seem quite equivalent, though I'm OK
Matt Giuca 2017/03/06 02:39:57 It's not equivalent; I deliberately changed it to
const string16 kSpace = ASCIIToUTF16(" ");
- EXPECT_EQ(ASCIIToUTF16("a|b|c|| "),
- JoinString({kA, kB, kC, kEmpty, kSpace}, ASCIIToUTF16("|")));
+ EXPECT_EQ(
+ ASCIIToUTF16("a|b|c|| "),
+ JoinString({kA, kB, kC, StringPiece16(), kSpace}, ASCIIToUTF16("|")));
// With StringPiece16s.
const StringPiece16 kPieceA = kA;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698