TOOLS: Add unit test for ReplaceAll().
authorphilip.liard@gmail.com <philip.liard@gmail.com@ee073f10-1060-11df-b6a4-87a95322a99c>
Mon, 9 Jul 2012 16:58:49 +0000 (16:58 +0000)
committerphilip.liard@gmail.com <philip.liard@gmail.com@ee073f10-1060-11df-b6a4-87a95322a99c>
Mon, 9 Jul 2012 16:58:49 +0000 (16:58 +0000)
Patch contributed by pmezard.

git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@490 ee073f10-1060-11df-b6a4-87a95322a99c

tools/cpp/src/cpp-build/generate_geocoding_data.cc
tools/cpp/src/cpp-build/generate_geocoding_data.h
tools/cpp/test/cpp-build/generate_geocoding_data_test.cc

index aace898..d02a853 100644 (file)
@@ -494,9 +494,12 @@ bool WriteCountryLanguages(const map<int32, set<string> >& languages,
 }
 
 // Returns a copy of input where all occurences of pattern are replaced with
-// value.
+// value. If pattern is empty, input is returned unchanged.
 string ReplaceAll(const string& input, const string& pattern,
                   const string& value) {
+  if (pattern.size() == 0) {
+    return input;
+  }
   string replaced;
   std::back_insert_iterator<string> output = std::back_inserter(replaced);
   string::const_iterator begin = input.begin(), end = begin;
index f087800..c65ab9b 100644 (file)
@@ -26,6 +26,9 @@ using std::string;
 
 string MakeStringLiteral(const string& s);
 
+string ReplaceAll(const string& input, const string& pattern,
+                  const string& value);
+
 int Main(int argc, const char* argv[]);
 
 }  // namespace phonenumbers
index 5e86b63..95f5224 100644 (file)
@@ -27,5 +27,13 @@ TEST(GenerateGeocodingDataTest, TestMakeStringLiteral) {
             MakeStringLiteral("Op\xc3\xa9ra"));
 }
 
+TEST(GenerateGeocodingDataTest, TestReplaceAll) {
+  EXPECT_EQ("", ReplaceAll("", "$input$", "cc"));
+  EXPECT_EQ("accb", ReplaceAll("a$input$b", "$input$", "cc"));
+  EXPECT_EQ("ab", ReplaceAll("a$input$b", "$input$", ""));
+  EXPECT_EQ("ab", ReplaceAll("ab", "", "cc"));
+  EXPECT_EQ("acdc", ReplaceAll("a$input$d$input$", "$input$", "c"));
+}
+
 }  // namespace phonenumbers
 }  // namespace i18n