summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-21 02:15:06 +0000
committernsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-21 02:15:06 +0000
commit1e5a0922a9e33bdab23f1f5e50b89e571deea87a (patch)
tree7a90e6159cf527917556a50c3bff5e974e708608
parent816888656f0a5152466c3d71c26fdb81e2db912e (diff)
downloadchromium_src-1e5a0922a9e33bdab23f1f5e50b89e571deea87a.zip
chromium_src-1e5a0922a9e33bdab23f1f5e50b89e571deea87a.tar.gz
chromium_src-1e5a0922a9e33bdab23f1f5e50b89e571deea87a.tar.bz2
Revert 82405 - Support more than 9 arguments for ReplaceStringPlaceholders()- support more than 9 arguments ($1, $2, $3, ..., $9 and $10, $11, $12, ...) for ReplaceStringPlaceholders()- add the unittest named ReplaceStringPlaceholdersMoreThan9Replacements for testing more than 9 arguments for ReplaceStringPlaceholders()BUG=16963TEST=string_util_unittest:StringUtilTest.ReplaceStringPlaceholdersMoreThan9ReplacementsPatch by haraken@google.com.Review URL: http://codereview.chromium.org/6877008
TBR=tony@chromium.org Review URL: http://codereview.chromium.org/6882108 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82423 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/string_util.cc10
-rw-r--r--base/string_util_unittest.cc38
2 files changed, 8 insertions, 40 deletions
diff --git a/base/string_util.cc b/base/string_util.cc
index 0cbb25f..1ad9abe 100644
--- a/base/string_util.cc
+++ b/base/string_util.cc
@@ -831,6 +831,7 @@ template<class FormatStringType, class OutStringType>
OutStringType DoReplaceStringPlaceholders(const FormatStringType& format_string,
const std::vector<OutStringType>& subst, std::vector<size_t>* offsets) {
size_t substitutions = subst.size();
+ DCHECK(substitutions < 10);
size_t sub_length = 0;
for (typename std::vector<OutStringType>::const_iterator iter = subst.begin();
@@ -855,14 +856,7 @@ OutStringType DoReplaceStringPlaceholders(const FormatStringType& format_string,
}
--i;
} else {
- uintptr_t index = 0;
- while ('0' <= *i && '9' >= *i) {
- index *= 10;
- index += *i - '0';
- ++i;
- }
- --i;
- index -= 1;
+ uintptr_t index = *i - '1';
if (offsets) {
ReplacementOffset r_offset(index,
static_cast<int>(formatted.size()));
diff --git a/base/string_util_unittest.cc b/base/string_util_unittest.cc
index b53bf54..cd45642 100644
--- a/base/string_util_unittest.cc
+++ b/base/string_util_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -863,21 +863,6 @@ TEST(StringUtilTest, GetStringFWithOffsets) {
offsets.clear();
}
-TEST(StringUtilTest, ReplaceStringPlaceholdersTooFew) {
- // Test whether replacestringplaceholders works as expected when there
- // are fewer inputs than outputs.
- std::vector<string16> subst;
- subst.push_back(ASCIIToUTF16("9a"));
- subst.push_back(ASCIIToUTF16("8b"));
- subst.push_back(ASCIIToUTF16("7c"));
-
- string16 formatted =
- ReplaceStringPlaceholders(
- ASCIIToUTF16("$1a,$2b,$3c,$4d,$5e,$6f,$1g,$2h,$3i"), subst, NULL);
-
- EXPECT_EQ(formatted, ASCIIToUTF16("9aa,8bb,7cc,d,e,f,9ag,8bh,7ci"));
-}
-
TEST(StringUtilTest, ReplaceStringPlaceholders) {
std::vector<string16> subst;
subst.push_back(ASCIIToUTF16("9a"));
@@ -897,30 +882,19 @@ TEST(StringUtilTest, ReplaceStringPlaceholders) {
EXPECT_EQ(formatted, ASCIIToUTF16("9aa,8bb,7cc,6dd,5ee,4ff,3gg,2hh,1ii"));
}
-TEST(StringUtilTest, ReplaceStringPlaceholdersMoreThan9Replacements) {
+TEST(StringUtilTest, ReplaceStringPlaceholdersTooFew) {
+ // Test whether replacestringplaceholders works as expected when there
+ // are fewer inputs than outputs.
std::vector<string16> subst;
subst.push_back(ASCIIToUTF16("9a"));
subst.push_back(ASCIIToUTF16("8b"));
subst.push_back(ASCIIToUTF16("7c"));
- subst.push_back(ASCIIToUTF16("6d"));
- subst.push_back(ASCIIToUTF16("5e"));
- subst.push_back(ASCIIToUTF16("4f"));
- subst.push_back(ASCIIToUTF16("3g"));
- subst.push_back(ASCIIToUTF16("2h"));
- subst.push_back(ASCIIToUTF16("1i"));
- subst.push_back(ASCIIToUTF16("0j"));
- subst.push_back(ASCIIToUTF16("-1k"));
- subst.push_back(ASCIIToUTF16("-2l"));
- subst.push_back(ASCIIToUTF16("-3m"));
- subst.push_back(ASCIIToUTF16("-4n"));
string16 formatted =
ReplaceStringPlaceholders(
- ASCIIToUTF16("$1a,$2b,$3c,$4d,$5e,$6f,$7g,$8h,$9i,"
- "$10j,$11k,$12l,$13m,$14n,$1"), subst, NULL);
+ ASCIIToUTF16("$1a,$2b,$3c,$4d,$5e,$6f,$1g,$2h,$3i"), subst, NULL);
- EXPECT_EQ(formatted, ASCIIToUTF16("9aa,8bb,7cc,6dd,5ee,4ff,3gg,2hh,"
- "1ii,0jj,-1kk,-2ll,-3mm,-4nn,9a"));
+ EXPECT_EQ(formatted, ASCIIToUTF16("9aa,8bb,7cc,d,e,f,9ag,8bh,7ci"));
}
TEST(StringUtilTest, StdStringReplaceStringPlaceholders) {