Index: runtime/vm/log_test.cc |
diff --git a/runtime/vm/log_test.cc b/runtime/vm/log_test.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b75ccee88c9d8c72e86771dcc2baaa35df744579 |
--- /dev/null |
+++ b/runtime/vm/log_test.cc |
@@ -0,0 +1,78 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. 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/globals.h" |
+ |
+#include "include/dart_debugger_api.h" |
+#include "vm/dart_api_impl.h" |
+#include "vm/dart_entry.h" |
+#include "vm/debugger.h" |
+#include "vm/globals.h" |
+#include "vm/isolate.h" |
+#include "vm/log.h" |
+#include "vm/message_handler.h" |
+#include "vm/unit_test.h" |
+ |
+namespace dart { |
+ |
+static const char* test_output_; |
+static void TestPrinter(const char* print, ...) { |
+ test_output_ = print; |
+} |
+ |
+class LogTestHelper : public AllStatic { |
+ public: |
+ static void SetPrinter(Log* log, LogPrinter printer) { |
+ ASSERT(log != NULL); |
+ ASSERT(printer != NULL); |
+ log->printer_ = printer; |
+ } |
+}; |
+ |
+ |
+TEST_CASE(Log_Macro) { |
+ test_output_ = NULL; |
+ Isolate* isolate = Isolate::Current(); |
+ Log* log = isolate->Log(); |
+ LogTestHelper::SetPrinter(log, TestPrinter); |
+ |
+ ISL_Print("Hello %s", "World"); |
+ EXPECT_STREQ("Hello World", test_output_); |
+ ISL_Print("SingleArgument"); |
+ EXPECT_STREQ("SingleArgument", test_output_); |
+} |
+ |
+ |
+TEST_CASE(Log_Basic) { |
+ test_output_ = NULL; |
+ Log* log = new Log(TestPrinter); |
+ |
+ EXPECT_EQ(reinterpret_cast<const char*>(NULL), test_output_); |
+ log->Print("Hello %s", "World"); |
+ EXPECT_STREQ("Hello World", test_output_); |
+} |
+ |
+ |
+TEST_CASE(Log_Block) { |
+ test_output_ = NULL; |
+ Log* log = new Log(TestPrinter); |
+ |
+ Isolate* isolate = Isolate::Current(); |
+ |
+ EXPECT_EQ(reinterpret_cast<const char*>(NULL), test_output_); |
+ { |
+ LogBlock ba(isolate, log); |
+ log->Print("APPLE"); |
+ EXPECT_EQ(reinterpret_cast<const char*>(NULL), test_output_); |
+ { |
+ LogBlock ba(isolate, log); |
+ log->Print("BANANA"); |
+ EXPECT_EQ(reinterpret_cast<const char*>(NULL), test_output_); |
+ } |
+ EXPECT_STREQ("BANANA", test_output_); |
+ } |
+ EXPECT_STREQ("APPLE", test_output_); |
+} |
+ |
+} // namespace dart |