|  | // Copyright 2017 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 "platform/wtf/ScopedLogger.h" | 
|  |  | 
|  | #include "platform/wtf/text/StringBuilder.h" | 
|  | #include "testing/gtest/include/gtest/gtest.h" | 
|  |  | 
|  | namespace WTF { | 
|  |  | 
|  | #if DCHECK_IS_ON() | 
|  | static const int kPrinterBufferSize = 256; | 
|  | static char g_buffer[kPrinterBufferSize]; | 
|  | static StringBuilder g_builder; | 
|  |  | 
|  | static void Vprint(const char* format, va_list args) { | 
|  | int written = vsnprintf(g_buffer, kPrinterBufferSize, format, args); | 
|  | if (written > 0 && written < kPrinterBufferSize) | 
|  | g_builder.Append(g_buffer); | 
|  | } | 
|  |  | 
|  | TEST(ScopedLoggerTest, ScopedLogger) { | 
|  | ScopedLogger::SetPrintFuncForTests(Vprint); | 
|  | { | 
|  | WTF_CREATE_SCOPED_LOGGER(a, "a1"); | 
|  | { | 
|  | WTF_CREATE_SCOPED_LOGGER_IF(b, false, "b1"); | 
|  | { | 
|  | WTF_CREATE_SCOPED_LOGGER(c, "c"); | 
|  | { WTF_CREATE_SCOPED_LOGGER(d, "d %d %s", -1, "hello"); } | 
|  | } | 
|  | WTF_APPEND_SCOPED_LOGGER(b, "b2"); | 
|  | } | 
|  | WTF_APPEND_SCOPED_LOGGER(a, "a2 %.1f", 0.5); | 
|  | } | 
|  |  | 
|  | EXPECT_EQ( | 
|  | "( a1\n" | 
|  | "  ( c\n" | 
|  | "    ( d -1 hello )\n" | 
|  | "  )\n" | 
|  | "  a2 0.5\n" | 
|  | ")\n", | 
|  | g_builder.ToString()); | 
|  | }; | 
|  | #endif  // DCHECK_IS_ON() | 
|  |  | 
|  | }  // namespace WTF |