| // Copyright 2020 The Chromium OS 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 "token_replacer.h" |
| |
| #include <gtest/gtest.h> |
| |
| namespace { |
| constexpr char kHostName[] = "hostname"; |
| constexpr char kUserName[] = "user@host.com"; |
| constexpr char kTitle[] = R"("This" & /that\\)"; |
| constexpr char kCopies[] = "42"; |
| } // namespace |
| |
| class TokenReplacerTest : public testing::Test { |
| protected: |
| TokenReplacerTest() : replacer_(kHostName, kUserName, kTitle, kCopies) {} |
| |
| TokenReplacer replacer_; |
| }; |
| |
| TEST(Title, NoChange) { |
| TokenReplacer replacer("unused", "unused", "unchanged", "unused"); |
| |
| EXPECT_EQ(replacer.GetTitle(), "unchanged"); |
| } |
| |
| // One backslash => one backslash |
| TEST(Title, Backslash) { |
| TokenReplacer replacer("unused", "unused", R"(this \ that)", "unused"); |
| |
| EXPECT_EQ(replacer.GetTitle(), R"(this \ that)"); |
| } |
| |
| // Two backslashes => one backslash |
| TEST(Title, Backslash2) { |
| TokenReplacer replacer("unused", "unused", R"(this \\ that)", "unused"); |
| |
| EXPECT_EQ(replacer.GetTitle(), R"(this \ that)"); |
| } |
| |
| // Three backslashes => two backslashes |
| TEST(Title, Backslash3) { |
| TokenReplacer replacer("unused", "unused", R"(this \\\ that)", "unused"); |
| |
| EXPECT_EQ(replacer.GetTitle(), R"(this \\ that)"); |
| } |
| |
| // Four backslashes => two backslashes |
| TEST(Title, Backslash4) { |
| TokenReplacer replacer("unused", "unused", R"(this \\\\ that)", "unused"); |
| |
| EXPECT_EQ(replacer.GetTitle(), R"(this \\ that)"); |
| } |
| |
| // Five backslashes => three backslashes |
| TEST(Title, Backslash5) { |
| TokenReplacer replacer("unused", "unused", R"(this \\\\\ that)", "unused"); |
| |
| EXPECT_EQ(replacer.GetTitle(), R"(this \\\ that)"); |
| } |
| |
| TEST(Title, Ampersand) { |
| TokenReplacer replacer("unused", "unused", "this & that", "unused"); |
| |
| EXPECT_EQ(replacer.GetTitle(), "this & that"); |
| } |
| |
| TEST(Title, DoubleQuotes) { |
| TokenReplacer replacer("unused", "unused", R"("this" and that)", "unused"); |
| |
| EXPECT_EQ(replacer.GetTitle(), "'this' and that"); |
| } |
| |
| TEST(Title, ForwardSlash) { |
| TokenReplacer replacer("unused", "unused", "this / that", "unused"); |
| |
| EXPECT_EQ(replacer.GetTitle(), "this / that"); |
| } |
| |
| TEST_F(TokenReplacerTest, UnchangedLine) { |
| EXPECT_EQ(replacer_.TokenizeLine("Unchanged"), "Unchanged"); |
| } |
| |
| TEST_F(TokenReplacerTest, ChangedHost) { |
| EXPECT_EQ(replacer_.TokenizeLine( |
| "@PJL SET STATIONID = GETMYHOST"), |
| R"(@PJL SET STATIONID = "hostname")"); |
| } |
| |
| TEST_F(TokenReplacerTest, ChangedUser) { |
| EXPECT_EQ(replacer_.TokenizeLine( |
| "@PJL SET USERNAME = GEYMYUSERNAME"), |
| R"(@PJL SET USERNAME = "user@host.com")"); |
| } |
| |
| TEST_F(TokenReplacerTest, ChangedTitle) { |
| EXPECT_EQ(replacer_.TokenizeLine( |
| "@PJL SET JOBNAME = GETMYJOBNAME"), |
| R"(@PJL SET JOBNAME = "'This' & /that\")"); |
| } |
| |
| TEST_F(TokenReplacerTest, ChangedCopies) { |
| EXPECT_EQ(replacer_.TokenizeLine( |
| "@PJL SET QTY = GETMYCOPIES"), |
| "@PJL SET QTY = 42"); |
| } |
| |
| TEST_F(TokenReplacerTest, ChangedJobInfo) { |
| EXPECT_EQ(replacer_.TokenizeLine( |
| "@PJL LJOBINFO USERID = GEYMYUSERNAME HOSTID = GETMYHOST"), |
| R"(@PJL LJOBINFO USERID = "user@host.com" HOSTID = "hostname")"); |
| } |