blob: 82933d2929dc99a1d79159cb42f372b274a7e845 [file] [log] [blame]
// Copyright 2019 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 "garnet/lib/system_monitor/gt_log.h"
#include "gtest/gtest.h"
namespace gt {
namespace {
class GtLogTest : public ::testing::Test {
public:
void SetUp() { SetUpLogging(/*argc=*/0, /*argv=*/nullptr); }
};
TEST_F(GtLogTest, Levels) {
// This series of Logger instances add to the |test_stream|. These are equal
// to unwrapping the GT_LOG(), except that GT_LOG() outputs to std::cout
// rather than this test stream.
GuiToolsLogLevel min_level = DEBUG;
std::ostringstream test_stream;
{
Logger logger(&test_stream, DEBUG, min_level, "apple/banana.h", 55);
logger.out() << "carrot";
logger.out() << " dog";
}
EXPECT_EQ("[DEBUG]banana.h:55: carrot dog\n", test_stream.str());
{
Logger logger(&test_stream, INFO, min_level, "zebra/cow.h", 2134132412);
logger.out() << "number is " << 5432;
}
EXPECT_EQ(
"[DEBUG]banana.h:55: carrot dog\n"
"[INFO]cow.h:2134132412: number is 5432\n",
test_stream.str());
{
Logger logger(&test_stream, WARNING, min_level, "x.h", 0);
logger.out() << 5432 << " was the number";
}
EXPECT_EQ(
"[DEBUG]banana.h:55: carrot dog\n"
"[INFO]cow.h:2134132412: number is 5432\n"
"[WARNING]x.h:0: 5432 was the number\n",
test_stream.str());
{ Logger logger(&test_stream, ERROR, min_level, "e.cc", 3); }
EXPECT_EQ(
"[DEBUG]banana.h:55: carrot dog\n"
"[INFO]cow.h:2134132412: number is 5432\n"
"[WARNING]x.h:0: 5432 was the number\n"
"[ERROR]e.cc:3: \n",
test_stream.str());
}
TEST_F(GtLogTest, BadInput) {
// Try to trip up the logger with some bogus values.
// Note: a nullptr for the file path will cause a segfault.
GuiToolsLogLevel min_level = DEBUG;
std::ostringstream test_stream;
{
Logger logger(&test_stream, (GuiToolsLogLevel)3000, min_level, "", -1);
logger.out() << "carrot\n";
logger.out() << " dog";
}
EXPECT_EQ("[UNKNOWN]:-1: carrot\n dog\n", test_stream.str());
{
// The -4 log level is below DEBUG, so this line will not be logged.
Logger logger(&test_stream, (GuiToolsLogLevel)-4, min_level, "hidden", -3);
}
EXPECT_EQ("[UNKNOWN]:-1: carrot\n dog\n", test_stream.str());
}
} // namespace
} // namespace gt