diff options
Diffstat (limited to 'third_party/libphonenumber/cpp/src/logger_test.cc')
-rw-r--r-- | third_party/libphonenumber/cpp/src/logger_test.cc | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/third_party/libphonenumber/cpp/src/logger_test.cc b/third_party/libphonenumber/cpp/src/logger_test.cc new file mode 100644 index 0000000..bd3d19b --- /dev/null +++ b/third_party/libphonenumber/cpp/src/logger_test.cc @@ -0,0 +1,104 @@ +// Copyright (C) 2011 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Author: Philippe Liard + +#include <string> + +#include <gtest/gtest.h> + +#include "default_logger.h" + +namespace i18n { +namespace phonenumbers { + +using std::string; + +// String logger implementation used for testing. Messages are output to a +// string for convenience. +class StringLogger : public Logger { + public: + virtual ~StringLogger() {} + + const string& message() const { + return msg_; + } + + virtual void WriteMessage(const string& msg) { + msg_ += msg; + } + + private: + string msg_; +}; + +class LoggerTest : public ::testing::Test { + protected: + virtual void SetUp() { + test_logger_.reset(new StringLogger()); + test_logger_->set_level(LOG_INFO); + // Save the current logger implementation and restore it when the test is + // done to avoid side-effects in other tests (including phonenumberutil + // tests) as the logger implementation is global. + old_logger_ = Logger::mutable_logger_impl(); + Logger::set_logger_impl(test_logger_.get()); + } + + virtual void TearDown() { + // Restore the previous logger implementation to avoid side-effects in other + // tests as mentioned above. + Logger::set_logger_impl(old_logger_); + } + + scoped_ptr<StringLogger> test_logger_; + Logger* old_logger_; +}; + +TEST_F(LoggerTest, LoggerIgnoresHigherVerbosity) { + // The logger verbosity is set to LOG_INFO, therefore LOG_DEBUG messages + // should be ignored. + VLOG(LOG_DEBUG) << "Hello"; + EXPECT_EQ("", test_logger_->message()); +} + +TEST_F(LoggerTest, LoggerOutputsNewline) { + VLOG(LOG_INFO) << "Hello"; + EXPECT_EQ("Hello\n", test_logger_->message()); +} + +TEST_F(LoggerTest, LoggerLogsEqualVerbosity) { + VLOG(LOG_INFO) << "Hello"; + EXPECT_EQ("Hello\n", test_logger_->message()); +} + +TEST_F(LoggerTest, LoggerLogsLowerVerbosity) { + VLOG(LOG_WARNING) << "Hello"; + EXPECT_EQ("Hello\n", test_logger_->message()); +} + +TEST_F(LoggerTest, LoggerConcatenatesMessages) { + VLOG(LOG_INFO) << "Hello"; + ASSERT_EQ("Hello\n", test_logger_->message()); + + VLOG(LOG_INFO) << " World"; + EXPECT_EQ("Hello\n World\n", test_logger_->message()); +} + +TEST_F(LoggerTest, LoggerHandlesDifferentTypes) { + VLOG(LOG_INFO) << "Hello " << 42; + EXPECT_EQ("Hello 42\n", test_logger_->message()); +} + +} // namespace phonenumbers +} // namespace i18n |