diff options
author | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-21 02:15:06 +0000 |
---|---|---|
committer | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-21 02:15:06 +0000 |
commit | 1e5a0922a9e33bdab23f1f5e50b89e571deea87a (patch) | |
tree | 7a90e6159cf527917556a50c3bff5e974e708608 | |
parent | 816888656f0a5152466c3d71c26fdb81e2db912e (diff) | |
download | chromium_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.cc | 10 | ||||
-rw-r--r-- | base/string_util_unittest.cc | 38 |
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) { |