From a49d51235c4fff4bf1252575f91347727d50b651 Mon Sep 17 00:00:00 2001 From: Philippe Liard Date: Mon, 9 Jul 2012 16:58:49 +0000 Subject: [PATCH] TOOLS: Add unit test for ReplaceAll(). --- tools/cpp/src/cpp-build/generate_geocoding_data.cc | 5 ++++- tools/cpp/src/cpp-build/generate_geocoding_data.h | 3 +++ tools/cpp/test/cpp-build/generate_geocoding_data_test.cc | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tools/cpp/src/cpp-build/generate_geocoding_data.cc b/tools/cpp/src/cpp-build/generate_geocoding_data.cc index aace898bc..d02a8530c 100644 --- a/tools/cpp/src/cpp-build/generate_geocoding_data.cc +++ b/tools/cpp/src/cpp-build/generate_geocoding_data.cc @@ -494,9 +494,12 @@ bool WriteCountryLanguages(const map >& 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 output = std::back_inserter(replaced); string::const_iterator begin = input.begin(), end = begin; diff --git a/tools/cpp/src/cpp-build/generate_geocoding_data.h b/tools/cpp/src/cpp-build/generate_geocoding_data.h index f08780076..c65ab9b5f 100644 --- a/tools/cpp/src/cpp-build/generate_geocoding_data.h +++ b/tools/cpp/src/cpp-build/generate_geocoding_data.h @@ -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 diff --git a/tools/cpp/test/cpp-build/generate_geocoding_data_test.cc b/tools/cpp/test/cpp-build/generate_geocoding_data_test.cc index 5e86b637e..95f52243b 100644 --- a/tools/cpp/test/cpp-build/generate_geocoding_data_test.cc +++ b/tools/cpp/test/cpp-build/generate_geocoding_data_test.cc @@ -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