blob: 76dfc6452370cf0398d2a17234326b2fc82b13a2 [file] [log] [blame]
// 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")");
}