1*635a8641SAndroid Build Coastguard Worker // Copyright 2017 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #include "base/strings/strcat.h" 6*635a8641SAndroid Build Coastguard Worker #include "base/strings/utf_string_conversions.h" 7*635a8641SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h" 8*635a8641SAndroid Build Coastguard Worker 9*635a8641SAndroid Build Coastguard Worker namespace base { 10*635a8641SAndroid Build Coastguard Worker 11*635a8641SAndroid Build Coastguard Worker TEST(StrCat, 8Bit) { 12*635a8641SAndroid Build Coastguard Worker EXPECT_EQ("", StrCat({""})); 13*635a8641SAndroid Build Coastguard Worker EXPECT_EQ("1", StrCat({"1"})); 14*635a8641SAndroid Build Coastguard Worker EXPECT_EQ("122", StrCat({"1", "22"})); 15*635a8641SAndroid Build Coastguard Worker EXPECT_EQ("122333", StrCat({"1", "22", "333"})); 16*635a8641SAndroid Build Coastguard Worker EXPECT_EQ("1223334444", StrCat({"1", "22", "333", "4444"})); 17*635a8641SAndroid Build Coastguard Worker EXPECT_EQ("122333444455555", StrCat({"1", "22", "333", "4444", "55555"})); 18*635a8641SAndroid Build Coastguard Worker } 19*635a8641SAndroid Build Coastguard Worker 20*635a8641SAndroid Build Coastguard Worker TEST(StrCat, 16Bit) { 21*635a8641SAndroid Build Coastguard Worker string16 arg1 = ASCIIToUTF16("1"); 22*635a8641SAndroid Build Coastguard Worker string16 arg2 = ASCIIToUTF16("22"); 23*635a8641SAndroid Build Coastguard Worker string16 arg3 = ASCIIToUTF16("333"); 24*635a8641SAndroid Build Coastguard Worker 25*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(ASCIIToUTF16(""), StrCat({string16()})); 26*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(ASCIIToUTF16("1"), StrCat({arg1})); 27*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(ASCIIToUTF16("122"), StrCat({arg1, arg2})); 28*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(ASCIIToUTF16("122333"), StrCat({arg1, arg2, arg3})); 29*635a8641SAndroid Build Coastguard Worker } 30*635a8641SAndroid Build Coastguard Worker 31*635a8641SAndroid Build Coastguard Worker TEST(StrAppend, 8Bit) { 32*635a8641SAndroid Build Coastguard Worker std::string result; 33*635a8641SAndroid Build Coastguard Worker 34*635a8641SAndroid Build Coastguard Worker result = "foo"; 35*635a8641SAndroid Build Coastguard Worker StrAppend(&result, {std::string()}); 36*635a8641SAndroid Build Coastguard Worker EXPECT_EQ("foo", result); 37*635a8641SAndroid Build Coastguard Worker 38*635a8641SAndroid Build Coastguard Worker result = "foo"; 39*635a8641SAndroid Build Coastguard Worker StrAppend(&result, {"1"}); 40*635a8641SAndroid Build Coastguard Worker EXPECT_EQ("foo1", result); 41*635a8641SAndroid Build Coastguard Worker 42*635a8641SAndroid Build Coastguard Worker result = "foo"; 43*635a8641SAndroid Build Coastguard Worker StrAppend(&result, {"1", "22", "333"}); 44*635a8641SAndroid Build Coastguard Worker EXPECT_EQ("foo122333", result); 45*635a8641SAndroid Build Coastguard Worker } 46*635a8641SAndroid Build Coastguard Worker 47*635a8641SAndroid Build Coastguard Worker TEST(StrAppend, 16Bit) { 48*635a8641SAndroid Build Coastguard Worker string16 arg1 = ASCIIToUTF16("1"); 49*635a8641SAndroid Build Coastguard Worker string16 arg2 = ASCIIToUTF16("22"); 50*635a8641SAndroid Build Coastguard Worker string16 arg3 = ASCIIToUTF16("333"); 51*635a8641SAndroid Build Coastguard Worker 52*635a8641SAndroid Build Coastguard Worker string16 result; 53*635a8641SAndroid Build Coastguard Worker 54*635a8641SAndroid Build Coastguard Worker result = ASCIIToUTF16("foo"); 55*635a8641SAndroid Build Coastguard Worker StrAppend(&result, {string16()}); 56*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(ASCIIToUTF16("foo"), result); 57*635a8641SAndroid Build Coastguard Worker 58*635a8641SAndroid Build Coastguard Worker result = ASCIIToUTF16("foo"); 59*635a8641SAndroid Build Coastguard Worker StrAppend(&result, {arg1}); 60*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(ASCIIToUTF16("foo1"), result); 61*635a8641SAndroid Build Coastguard Worker 62*635a8641SAndroid Build Coastguard Worker result = ASCIIToUTF16("foo"); 63*635a8641SAndroid Build Coastguard Worker StrAppend(&result, {arg1, arg2, arg3}); 64*635a8641SAndroid Build Coastguard Worker EXPECT_EQ(ASCIIToUTF16("foo122333"), result); 65*635a8641SAndroid Build Coastguard Worker } 66*635a8641SAndroid Build Coastguard Worker 67*635a8641SAndroid Build Coastguard Worker } // namespace base 68