| Index: base/test/trace_event_analyzer_unittest.cc
|
| diff --git a/base/test/trace_event_analyzer_unittest.cc b/base/test/trace_event_analyzer_unittest.cc
|
| index af1a3e0c3aa8fadfcb0c630b76f5c525822fccf8..dd5e6b599628c5513f7c594d74d15553399fd551 100644
|
| --- a/base/test/trace_event_analyzer_unittest.cc
|
| +++ b/base/test/trace_event_analyzer_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/test/trace_event_analyzer.h"
|
| #include "base/threading/platform_thread.h"
|
| #include "base/trace_event/trace_buffer.h"
|
| +#include "base/trace_event/trace_event_argument.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -98,6 +99,7 @@ TEST_F(TraceEventAnalyzerTest, TraceEvent) {
|
| event.arg_numbers["int"] = static_cast<double>(int_num);
|
| event.arg_numbers["double"] = double_num;
|
| event.arg_strings["string"] = str;
|
| + event.arg_values["dict"] = make_scoped_ptr(new base::DictionaryValue());
|
|
|
| ASSERT_TRUE(event.HasNumberArg("false"));
|
| ASSERT_TRUE(event.HasNumberArg("true"));
|
| @@ -106,12 +108,18 @@ TEST_F(TraceEventAnalyzerTest, TraceEvent) {
|
| ASSERT_TRUE(event.HasStringArg("string"));
|
| ASSERT_FALSE(event.HasNumberArg("notfound"));
|
| ASSERT_FALSE(event.HasStringArg("notfound"));
|
| + ASSERT_TRUE(event.HasArg("dict"));
|
| + ASSERT_FALSE(event.HasArg("notfound"));
|
|
|
| EXPECT_FALSE(event.GetKnownArgAsBool("false"));
|
| EXPECT_TRUE(event.GetKnownArgAsBool("true"));
|
| EXPECT_EQ(int_num, event.GetKnownArgAsInt("int"));
|
| EXPECT_EQ(double_num, event.GetKnownArgAsDouble("double"));
|
| EXPECT_STREQ(str, event.GetKnownArgAsString("string").c_str());
|
| +
|
| + scoped_ptr<base::Value> arg;
|
| + EXPECT_TRUE(event.GetArgAsValue("dict", &arg));
|
| + EXPECT_EQ(base::Value::TYPE_DICTIONARY, arg->GetType());
|
| }
|
|
|
| TEST_F(TraceEventAnalyzerTest, QueryEventMember) {
|
| @@ -895,5 +903,37 @@ TEST_F(TraceEventAnalyzerTest, CountMatches) {
|
| EXPECT_EQ(num_named, CountMatches(event_ptrs, query_named));
|
| }
|
|
|
| +TEST_F(TraceEventAnalyzerTest, ComplexArgument) {
|
| + ManualSetUp();
|
| +
|
| + BeginTracing();
|
| + {
|
| + scoped_ptr<base::trace_event::TracedValue> value(
|
| + new base::trace_event::TracedValue);
|
| + value->SetString("property", "value");
|
| + TRACE_EVENT1("cat", "name", "arg", std::move(value));
|
| + }
|
| + EndTracing();
|
| +
|
| + scoped_ptr<TraceAnalyzer> analyzer(
|
| + TraceAnalyzer::Create(output_.json_output));
|
| + ASSERT_TRUE(analyzer.get());
|
| +
|
| + TraceEventVector events;
|
| + analyzer->FindEvents(Query::EventName() == Query::String("name"), &events);
|
| +
|
| + EXPECT_EQ(1u, events.size());
|
| + EXPECT_EQ("cat", events[0]->category);
|
| + EXPECT_EQ("name", events[0]->name);
|
| + EXPECT_TRUE(events[0]->HasArg("arg"));
|
| +
|
| + scoped_ptr<base::Value> arg;
|
| + events[0]->GetArgAsValue("arg", &arg);
|
| + base::DictionaryValue* arg_dict;
|
| + EXPECT_TRUE(arg->GetAsDictionary(&arg_dict));
|
| + std::string property;
|
| + EXPECT_TRUE(arg_dict->GetString("property", &property));
|
| + EXPECT_EQ("value", property);
|
| +}
|
|
|
| } // namespace trace_analyzer
|
|
|