| // Copyright 2017 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "peridot/lib/util/string_escape.h" |
| |
| #include "gtest/gtest.h" |
| |
| using fxl::StringView; |
| |
| namespace modular { |
| namespace { |
| |
| TEST(EscapeStringTest, EscapeUnescape) { |
| StringView original = "ABCDEFGHIJKLMNOPQRST"; |
| std::string expected = "ABCD|EFGHI|JKLMNOPQRST"; |
| |
| EXPECT_EQ(expected, StringEscape(original, "EJ", '|')); |
| EXPECT_EQ(original, StringUnescape(expected, '|')); |
| |
| EXPECT_EQ("a", StringUnescape("|a", '|')); |
| } |
| |
| TEST(EscapeStringTest, SplitSimple) { |
| auto result = SplitEscapedString("a_b|_c_d", '_', '|'); |
| EXPECT_EQ(3u, result.size()); |
| EXPECT_EQ("a", result[0]); |
| EXPECT_EQ("b|_c", result[1]); |
| EXPECT_EQ("d", result[2]); |
| } |
| |
| TEST(EscapeStringTest, SplitEdge) { |
| auto result = SplitEscapedString("a_", '_', '|'); |
| EXPECT_EQ(1u, result.size()); |
| EXPECT_EQ("a", result[0]); |
| } |
| |
| TEST(EscapeStringTest, SplitWithEmpties) { |
| auto result = SplitEscapedString("a___b", '_', '|'); |
| EXPECT_EQ(4u, result.size()); |
| EXPECT_EQ("a", result[0]); |
| EXPECT_EQ("", result[1]); |
| EXPECT_EQ("", result[2]); |
| EXPECT_EQ("b", result[3]); |
| } |
| |
| } // namespace |
| } // namespace modular |