aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/compiler/tf2xla/str_util_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tensorflow/compiler/tf2xla/str_util_test.cc')
-rw-r--r--tensorflow/compiler/tf2xla/str_util_test.cc90
1 files changed, 90 insertions, 0 deletions
diff --git a/tensorflow/compiler/tf2xla/str_util_test.cc b/tensorflow/compiler/tf2xla/str_util_test.cc
new file mode 100644
index 0000000000..f992007a34
--- /dev/null
+++ b/tensorflow/compiler/tf2xla/str_util_test.cc
@@ -0,0 +1,90 @@
+/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+==============================================================================*/
+
+#include "tensorflow/compiler/tf2xla/str_util.h"
+
+#include <string>
+#include <utility>
+#include <vector>
+
+#include "tensorflow/core/lib/core/stringpiece.h"
+#include "tensorflow/core/platform/test.h"
+
+namespace tensorflow {
+namespace str_util {
+
+class ReplaceAllTest : public ::testing::Test {
+ protected:
+ void ExpectReplaceAll(string text, StringPiece from, StringPiece to,
+ StringPiece want) {
+ ReplaceAll(&text, from, to);
+ EXPECT_EQ(text, want);
+ }
+};
+
+TEST_F(ReplaceAllTest, Simple) {
+ ExpectReplaceAll("", "", "", "");
+ ExpectReplaceAll("", "", "X", "X");
+ ExpectReplaceAll("", "", "XYZ", "XYZ");
+ ExpectReplaceAll("banana", "", "", "banana");
+ ExpectReplaceAll("banana", "", "_", "_b_a_n_a_n_a_");
+ ExpectReplaceAll("banana", "", "__", "__b__a__n__a__n__a__");
+ ExpectReplaceAll("banana", "a", "a", "banana");
+ ExpectReplaceAll("banana", "a", "", "bnn");
+ ExpectReplaceAll("banana", "a", "X", "bXnXnX");
+ ExpectReplaceAll("banana", "a", "XX", "bXXnXXnXX");
+ ExpectReplaceAll("banana", "an", "an", "banana");
+ ExpectReplaceAll("banana", "an", "", "ba");
+ ExpectReplaceAll("banana", "an", "X", "bXXa");
+ ExpectReplaceAll("banana", "an", "XY", "bXYXYa");
+ ExpectReplaceAll("banana", "an", "XYZ", "bXYZXYZa");
+ ExpectReplaceAll("foo {{bar}} baz {{bar}}", "{{bar}}", "X", "foo X baz X");
+ ExpectReplaceAll("foo {{bar}} baz {{bar}}", "{{bar}}", "ABCDEFGHIJKLMNOP",
+ "foo ABCDEFGHIJKLMNOP baz ABCDEFGHIJKLMNOP");
+}
+
+class ReplaceAllPairsTest : public ::testing::Test {
+ protected:
+ void ExpectReplaceAllPairs(
+ string text, const std::vector<std::pair<string, string>>& replace,
+ StringPiece want) {
+ ReplaceAllPairs(&text, replace);
+ EXPECT_EQ(text, want);
+ }
+};
+
+TEST_F(ReplaceAllPairsTest, Simple) {
+ ExpectReplaceAllPairs("", {}, "");
+ ExpectReplaceAllPairs("", {{"", ""}}, "");
+ ExpectReplaceAllPairs("", {{"", "X"}}, "X");
+ ExpectReplaceAllPairs("", {{"", "XYZ"}}, "XYZ");
+ ExpectReplaceAllPairs("", {{"", "XYZ"}, {"", "_"}}, "_X_Y_Z_");
+ ExpectReplaceAllPairs("", {{"", "XYZ"}, {"", "_"}, {"_Y_", "a"}}, "_XaZ_");
+ ExpectReplaceAllPairs("banana", {}, "banana");
+ ExpectReplaceAllPairs("banana", {{"", ""}}, "banana");
+ ExpectReplaceAllPairs("banana", {{"", "_"}}, "_b_a_n_a_n_a_");
+ ExpectReplaceAllPairs("banana", {{"", "__"}}, "__b__a__n__a__n__a__");
+ ExpectReplaceAllPairs("banana", {{"a", "a"}}, "banana");
+ ExpectReplaceAllPairs("banana", {{"a", ""}}, "bnn");
+ ExpectReplaceAllPairs("banana", {{"a", "X"}}, "bXnXnX");
+ ExpectReplaceAllPairs("banana", {{"a", "XX"}}, "bXXnXXnXX");
+ ExpectReplaceAllPairs("banana", {{"a", "XX"}, {"XnX", "z"}}, "bXzzX");
+ ExpectReplaceAllPairs("a{{foo}}b{{bar}}c{{foo}}",
+ {{"{{foo}}", "0"}, {"{{bar}}", "123456789"}},
+ "a0b123456789c0");
+}
+
+} // namespace str_util
+} // namespace tensorflow