blob: 162e65b19a261e14262a45543b2bc34486da220f [file] [log] [blame]
// Copyright 2018 The Chromium 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 "chrome/chrome_cleaner/logging/message_builder.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace chrome_cleaner {
TEST(MessageBuilderTest, NewLine) {
MessageBuilder builder;
builder.NewLine();
EXPECT_EQ(L"\n", builder.content());
builder.NewLine().NewLine();
EXPECT_EQ(L"\n\n\n", builder.content());
}
TEST(MessageBuilderTest, Add) {
MessageBuilder builder;
builder.Add(L"abc").Add(L" ").Add("xyz").Add(" ").Add(10);
EXPECT_EQ(L"abc xyz 10", builder.content());
builder.Add(" ").Add(true).Add(" ").Add(false);
EXPECT_EQ(L"abc xyz 10 1 0", builder.content());
}
TEST(MessageBuilderTest, AddLine) {
MessageBuilder builder;
builder.AddLine(L"abc", L" ", 10).AddLine("xyz", L" ", false);
base::string16 expected = L"abc 10\nxyz 0\n";
EXPECT_EQ(expected, builder.content());
builder.AddLine(" test ", true).AddLine(false);
expected += L" test 1\n0\n";
EXPECT_EQ(expected, builder.content());
}
TEST(MessageBuilderTest, ScopedIndentation) {
MessageBuilder builder;
builder.Add(L"*", L"*").NewLine();
base::string16 expected = L"**\n";
EXPECT_EQ(expected, builder.content());
{
MessageBuilder::ScopedIndent scoped_indent(&builder);
builder.Add(L"*", L"*").AddLine(L"*");
expected += L"\t***\n";
EXPECT_EQ(expected, builder.content());
{
auto scoped_indent = builder.Indent();
builder.Add(L"*", L"*", L"*").NewLine();
expected += L"\t\t***\n";
EXPECT_EQ(expected, builder.content());
builder.AddLine(L"*", L"*");
expected += L"\t\t**\n";
EXPECT_EQ(expected, builder.content());
MessageBuilder::ScopedIndent scoped_indent_2(&builder);
builder.Add(L"*", L"*").NewLine();
expected += L"\t\t\t**\n";
EXPECT_EQ(expected, builder.content());
}
builder.Add(L"*", L"*").NewLine();
expected += L"\t**\n";
EXPECT_EQ(expected, builder.content());
}
builder.Add(L"*");
expected += L"*";
EXPECT_EQ(expected, builder.content());
{
MessageBuilder::ScopedIndent scoped_indent(&builder);
expected += L"\n"; // Added due to change in indentation level.
EXPECT_EQ(expected, builder.content());
builder.Add(L"*", L"*");
expected += L"\t**";
EXPECT_EQ(expected, builder.content());
}
expected += L"\n"; // Added due to change in indentation level.
EXPECT_EQ(expected, builder.content());
builder.AddLine(L"*", L"*");
expected += L"**\n";
EXPECT_EQ(expected, builder.content());
{
auto scoped_indent = builder.Indent();
builder.AddLine(L"*", L"*");
expected += L"\t**\n";
EXPECT_EQ(expected, builder.content());
}
builder.Add(L"*", L"*").Add(L"*", L"*", L"*").NewLine();
expected += L"*****\n";
EXPECT_EQ(expected, builder.content());
}
TEST(MessageBuilderTest, AddHeaderLine) {
MessageBuilder builder;
builder.AddHeaderLine(L"Header1").AddHeaderLine(L"Header2");
base::string16 expected = L"Header1:\nHeader2:\n";
EXPECT_EQ(expected, builder.content());
MessageBuilder::ScopedIndent scoped_indent(&builder);
builder.AddHeaderLine(L"Header3");
expected += L"\tHeader3:\n";
EXPECT_EQ(expected, builder.content());
MessageBuilder::ScopedIndent scoped_indent_2(&builder);
builder.AddHeaderLine(L"Header4").AddHeaderLine(L"Header5");
expected += L"\t\tHeader4:\n\t\tHeader5:\n";
EXPECT_EQ(expected, builder.content());
}
TEST(MessageBuilderTest, AddFieldValueLine) {
MessageBuilder builder;
builder.AddFieldValueLine(L"Field1", "abc")
.AddFieldValueLine(L"Field2", L"xyz");
base::string16 expected = L"Field1: abc\nField2: xyz\n";
EXPECT_EQ(expected, builder.content());
MessageBuilder::ScopedIndent scoped_indent(&builder);
builder.AddFieldValueLine(L"Field3", 10);
expected += L"\tField3: 10\n";
EXPECT_EQ(expected, builder.content());
MessageBuilder::ScopedIndent scoped_indent_2(&builder);
builder.AddFieldValueLine(L"Field4", true)
.AddFieldValueLine(L"Field5", false);
expected += L"\t\tField4: 1\n\t\tField5: 0\n";
EXPECT_EQ(expected, builder.content());
}
} // namespace chrome_cleaner